我有一个C#控制台应用程序,它运行在64位Windows 2008服务器上,并通过ODP.net访问Oracle 11g。它已经工作了大约6个月。
我在我的计算机上编译程序,使构建设置为“任何CPU”。我在6个月前在Windows服务器上安装了相应的64位Oracle dll,并且从不替换它 - 我只替换了控制台应用程序的exe。
我昨晚更新了 - 现在我得到一个BadImageFormat异常,但是找不到Oracle程序集,这通常意味着我有一个错误的dll编译包。我确认并且我仍在使用原始的Oracle dll。我还确认我正在编译服务器上的“任何CPU”。
我甚至尝试过重新编译和重新加载,并找到原始Oracle dll的源代码并重新加载。
有没有人见过这个?有什么想法吗?
答案 0 :(得分:0)
所以我在试错后发现了这个。
在某些时候我已经将我的PC上的ODP版本更新为版本4. ,但服务器上的版本是2。。虽然我已经正确地考虑了32位而不是64位,但它被编译为期望特定版本。
出于某种原因,我不能将新的DLL复制到服务器上。我必须编译引用4. * 64bit dll的应用程序,然后我可以将所有内容加载到服务器并让它工作。然后我不得不删除引用并重新引用32位以便继续在我的PC上工作。很烦人,但它确实有效。