Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在尝试将Oracle.DataAccess重定向到Oracle.ManagedDataAccess_C#_.net_Oracle_Ado.net - Fatal编程技术网

C# 正在尝试将Oracle.DataAccess重定向到Oracle.ManagedDataAccess

C# 正在尝试将Oracle.DataAccess重定向到Oracle.ManagedDataAccess,c#,.net,oracle,ado.net,C#,.net,Oracle,Ado.net,因此,我有一个应用程序,其中包含根据Oracle.DataAccess编译的遗留库。该应用程序已升级为使用Oracle.ManagedDataAccess,但旧库已链接到Oracle.DataAccess 由于Oracle.DataAccess和Oracle.ManagedDataAccess都具有相同的公钥令牌“89b483f429c47342”,我想我可以执行程序集重定向来绕过这个问题,但它没有起作用 以下是我尝试过的(在使用旧库的程序集的Web.config文件中): 及 基本上,

因此,我有一个应用程序,其中包含根据Oracle.DataAccess编译的遗留库。该应用程序已升级为使用Oracle.ManagedDataAccess,但旧库已链接到Oracle.DataAccess

由于Oracle.DataAccess和Oracle.ManagedDataAccess都具有相同的公钥令牌“89b483f429c47342”,我想我可以执行程序集重定向来绕过这个问题,但它没有起作用

以下是我尝试过的(在使用旧库的程序集的Web.config文件中):



基本上,所发生的一切都是空穴来风。我一直收到一个编译错误,上面说:

错误CS0012:类型“Oracle.DataAccess.Client.OracleParameter”为 在未引用的程序集中定义。考虑添加 引用程序集“Oracle.DataAccess,版本=4.112.2.0, 区域性=中性,PublicKeyToken=89b483f429c47342'(CS0012)

所讨论的代码是一个采用
OracleParameter
类型的方法


为什么这不起作用?我是否误解了程序集绑定重定向的用途?

您可能需要检查项目文件以获取oracle dll及其版本的参考。我最近遇到了这样一个问题

<Reference Include="Oracle.DataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86">
  <HintPath>..\..\SharedAssemblies\Oracle.DataAccess.dll</HintPath>
</Reference>

..\..\SharedAssemblies\Oracle.DataAccess.dll

如您所见,my proj文件中的reference部分与引用dll的位置之间的距离为4.121.2.0,而该位置中的物理文件版本为4.112.2.0。一旦进行了此更改,我就可以继续进行。

在新程序集中似乎找不到有问题的类型。尝试使用reflector或dotPeek在itDo中查找
OracleParameter
,如果程序集名称已更改,则程序集重定向工作?老实说,我从未使用过此技术。但是我经常使用ODP.NET。所以,
OracleParameter
就像我的兄弟
<dependentAssembly>
  <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.121.1.0" newVersion="4.121.1.0" />
  <publisherPolicy apply="no" />    
</dependentAssembly>
<Reference Include="Oracle.DataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86">
  <HintPath>..\..\SharedAssemblies\Oracle.DataAccess.dll</HintPath>
</Reference>