C# 正在尝试将Oracle.DataAccess重定向到Oracle.ManagedDataAccess
因此,我有一个应用程序,其中包含根据Oracle.DataAccess编译的遗留库。该应用程序已升级为使用Oracle.ManagedDataAccess,但旧库已链接到Oracle.DataAccess 由于Oracle.DataAccess和Oracle.ManagedDataAccess都具有相同的公钥令牌“89b483f429c47342”,我想我可以执行程序集重定向来绕过这个问题,但它没有起作用 以下是我尝试过的(在使用旧库的程序集的Web.config文件中):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文件中): 及 基本上,
及
基本上,所发生的一切都是空穴来风。我一直收到一个编译错误,上面说:
错误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>