我正在做ASP.NET MVC3,我对ODP.NET,ORACLE.DATAACCESS。
每当我尝试进行单元测试时,它都会抛出FileNotFoundException。我以为我已经安装并使用了oracle.dataaccess v4.112.3.0,但是我的应用程序一直在寻找'oracle.dataaccess,版本= 4.121.1.0'。
我仍然可以在我的GAC中找到'oracle.dataaccess v4.112.3.0',并通过我在Machine.config中发现的fusionLog。所以我想有一些版本的ODP.NET冲突。
<system.data>
<DbProviderFactories>
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
所以,我尝试修改Machine.config中的版本,但它不起作用。
有人可以帮助我解决此问题吗?
您可以随时在web.config(或Machine.config)中使用运行时重定向的特定版本,前提
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
<bindingRedirect oldVersion="4.121.1.0" newVersion="4.112.3.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
根据我的经验,这个技巧从10.1重定向到任何较新版本时都起作用,但是一旦我们在试图向后重定向时遇到了神秘的错误(请参阅此),因此我建议您更好地找到这种情况的确切原因 - 查看您的 *.csproj where.dataAccess恰好引用和/或拆卸您的二进制文件以检查参考库的参考。(您使用的第三方lib而不是代码,而不是代码。