windows-services - 迁移到 64 位计算机时对 dll 的影响

标签 windows-services 64-bit

我们有一台 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/

相关文章:

mysql - MariaDB install : I unchecked running as service during installation. 启动和停止 mariadb 的正确方法是什么?

c# - 将调试 View 与 Windows 服务一起使用

security - 如何禁止 Windows 服务停止

matlab - 在 64 位 Ubuntu 12.10 中使用 32 位库编译代码的符号链接(symbolic link)

c#.net 32​​ 位应用程序不适用于 64 位操作系统

windows-7 - 如何在没有 Visual Studio 的情况下在 Windows 7 上安装服务?

.net - IAsyncOperation 在 Windows 服务中等待 : "Type is defined in an assembly that is not referenced..."

batch-file - 查找是否从注册表或文件系统安装了 Visual Studio 2010 SP1 (VC10) x64

ios - 当我将架构更新为 arm64 时,Restkit 失败

Android SDK 管理器在 Windows 8 64 位上失败