移动到64位机器时对dll的影响

Dan*_*iel 2 64-bit windows-services

我们有一台32位终端服务计算机运行我们使用.NET构建的一些Windows服务.最近我们把所有东西都搬到了64位机器上.大多数事情都有效 但是,我们对apachefop.net的dll感到悲伤.

特别是我们得到以下错误

错误:插件脚本服务执行失败:无法加载文件或程序集'apachefop.net,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一.尝试加载格式不正确的程序.

我猜这是因为它不适用于64位机器.有关如何纠正这种情况的任何建议?

Pat*_*eVB 5

问题似乎是由于您的程序集已使用anycpu设置进行编译.在这种模式下,当在64位机器上运行时,您的进程自动变为64位进程,而您的本机引用不会...并且由于无法从64位进程加载32位库,您将遇到烦恼.

要快速诊断是否是这种情况,您可以使用corflags.exe,它是.net框架的一部分:corflags.exe pathtoyourdotnetprogram/32bit +

然后运行你的程序.如果您的软运行良好,那么您应该更改项目中的anycpu设置以强制编译器编译为32位程序集.