Windows services 移动到64位计算机时对DLL的影响

Windows services 移动到64位计算机时对DLL的影响,windows-services,64-bit,Windows Services,64 Bit,我们有一台32位终端服务计算机,运行我们使用.NET构建的一些Windows服务。最近我们把所有东西都转移到了64位机器上。大多数事情都有效。然而,我们从apachefop.net的dll中得到了悲伤 特别是我们得到以下错误 错误:插件转录本服务 执行失败:无法加载文件 或汇编'apachefop.net, 版本=0.0.0.0,区域性=中性, PublicKeyToken=null'或其 依赖关系。有人试图 用不正确的代码加载程序 格式 我猜这是因为它不适用于64位机器。有没有关于如何纠正这种

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

特别是我们得到以下错误

错误:插件转录本服务 执行失败:无法加载文件 或汇编'apachefop.net, 版本=0.0.0.0,区域性=中性, PublicKeyToken=null'或其 依赖关系。有人试图 用不正确的代码加载程序 格式


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

这些问题似乎是由于您的程序集是使用anycpu设置编译的。在此模式下,当在64位计算机上运行时,您的进程将自动成为64位进程,而您的本机引用不会。。。由于无法从64位进程加载32位库,所以您遇到了麻烦

要快速诊断是否存在这种情况,可以使用corflags.exe,它是.net framework的一部分: corflags.exe路径到YourDotNetProgram/32位+


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

Awesome!非常感谢帕特里斯。