.net core 通过Assembly.Load加载Oracle.ManagedDataAccess.dll 提示系统找不到指定的文件问题

开发工具:VS2017

问题:Assembly.Load("Oracle.ManagedDataAccess")出错

System.IO.FileNotFoundException: Could not load file or assembly 'Oracle.ManagedDataAccess, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。
File name: 'Oracle.ManagedDataAccess, Culture=neutral, PublicKeyToken=null'
   at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, IntPtr ptrLoadContextBinder)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, IntPtr ptrLoadContextBinder)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, StackCrawlMark& stackMark, IntPtr pPrivHostBinder)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, StackCrawlMark& stackMark)
   at System.Reflection.Assembly.Load(String assemblyString)

解决方式:

找到Web工程bin文件夹下的“项目名称.deps.json”文件,添加Oracle.ManagedDataAccess.dll的相关引用

"Oracle.ManagedDataAccess.Core/2.19.70": {
        "runtime": {
          "lib/netstandard2.0/Oracle.ManagedDataAccess.dll": {
            "assemblyVersion": "2.0.19.1",
            "fileVersion": "2.0.19.1"
          }
        },
        "compile": {
          "lib/netstandard2.0/Oracle.ManagedDataAccess.dll": {}
        }
      }

所在项目的引用,本文项目名称DBUtility

"DBUtility/1.0.0": {
        "dependencies": {
          "Microsoft.Extensions.Configuration": "2.1.1",
          "Microsoft.Extensions.Configuration.Json": "2.1.1",
          "Oracle.ManagedDataAccess.Core": "2.19.70"
        }

 

"Oracle.ManagedDataAccess.Core/2.19.70": {
      "type": "package",
      "serviceable": true,
      "sha512": "sha512-bpsnNrSc/dtKx5KSrnG1CTYlAzNzWV0BVmb5HbcPDgMY5FfGLKi5W96e7UHtSq6vniKIt7ptTie9uWGUqOyj4A==",
      "path": "oracle.manageddataaccess.core/2.19.70",
      "hashPath": "oracle.manageddataaccess.core.2.19.70.nupkg.sha512"
    }

如果不清楚这些引用的具体信息呢,可以通过NuGet安装这个DLL,安装后“项目名称.deps.json”这个文件中会自动加入引用信息。另外通过NuGet安装后,执行Assembly.Load("Oracle.ManagedDataAccess.Client")执行是不出错的。如果不想通过NuGet引用,只想使用时调用Oracle.ManagedDataAccess.dll,就像本文这种情况,就可以采用先通过NuGet引用,没问题后备份“项目名称.deps.json”这个文件,然后把NuGet引用去掉,再使用备份好的项目名称.deps.json,Assembly.Load("Oracle.ManagedDataAccess.Client")就不会出错了,加载成功后

 通过快速监视也能看到被加载文件的位置。

有没有其它更好的解决方式,还需要更多了解netcore

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值