我们有一台 32 位终端服务计算机,运行我们使用 .NET 构建的一些 Windows 服务。最近我们将所有内容都转移到了 64 位机器上。大多数事情都有效。然而,我们从 apachefop.net 的 dll 中得到了悲伤。
特别是我们收到以下错误
Error: Plugin Transcript Service Execution Failed: Could not load file or assembly 'apachefop.net, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
我猜测这是因为它不适合在 64 位机器上运行。关于如何纠正这种情况有什么建议吗?
最佳答案
问题似乎是由于您的程序集是使用anycpu 设置编译的这一事实引起的。在这种模式下,当在 64 位机器上运行时,您的进程会自动成为 64 位进程,而您的 native 引用不会...并且由于无法从您正在运行的 64 位进程加载 32 位库麻烦。
要快速诊断是否属于这种情况,您可以使用 corflags.exe,它是 .net 框架的一部分: corflags.exe 你的dotnet程序的路径/32位+
然后运行你的程序。如果您的软件运行良好,那么您应该更改项目中的anycpu设置以强制编译器编译为32位程序集。
关于windows-services - 迁移到 64 位计算机时对 dll 的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1842153/