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

时间:2009-12-03 19:03:27

标签: windows-services 64-bit

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

特别是我们收到以下错误

  

错误:插件脚本服务   执行失败:无法加载文件   或汇编'apachefop.net,   版本= 0.0.0.0,文化=中立,   PublicKeyToken = null'或其中一个   依赖。试图做到   加载程序不正确   格式。

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

1 个答案:

答案 0 :(得分:5)

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

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

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