【发布时间】:2018-12-13 07:54:14
【问题描述】:
我已经使用 C# 构建了一个应用程序。我参考了 ODAC 版本 4.121.2.0。 当我在服务器上部署我的应用程序时,应用程序失败并出现错误:
未处理的异常:System.BadImageFormatException:无法加载文件或资产 mbly 'Oracle.DataAccess,版本=4.121.2.0,文化=中性,PublicKeyToken=89b4 83f429c47342'。该程序集是为不同的处理器编译的。
服务器只安装了 4.121.1.0。
我需要做什么才能使应用程序正常工作?我尝试过的事情:
1. In the .csproj <SpecificVersion>False</SpecificVersion>
<Private>False</Private>
2. I tried copying over the ODAC version (4.121.2.0) in the bin solution directory(of the server), it wouldn't work.
3. I tried removing all ODAC dlls in folder, so that it can find out older version and use that for functionality.
我不想在本地安装旧版本,然后 - 我过去曾尝试过此操作,但最终卸载了所有版本。
可能的重复: Having two ODP.NET (ODAC) versions in the same server
How do I get an older version of OracleClient to work locally with .NET? oracleclient-to-work-locally-with-net
但是这些链接并没有为我的问题提供解决方案。
【问题讨论】:
-
差别不大。您的代码在构建时需要一个较新的程序集,但是却发现了一个 较旧的 程序集。部署正确的文件
-
BTW
BadImageFormatException通常在 32 位和 64 位程序集混合时抛出。这是一个巨大的差异。部署 正确 程序集。如果您无法控制使用哪个版本的 ODAC,请找出服务器的版本并使用该版本重新编译您的代码 -
我已经从问题中删除了“稍微”(对不起,我太累了)。我做了 2 处更改 - 参考路径从我的 Oracle Home 更改为使用 GAC。 - 修改 Proj 以使用 64 位 dll。经过上述2次更改后它起作用了。谢谢