.NET Framework 4.0 Windows 2012
我有两个使用单个DLL的EXE。其中一个EXE始终有效,但另一个EXE总是失败并显示以下消息:
无法加载文件或程序集“{dllHere},Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一。试图加载格式不正确的程序。“
每个EXE都在一个单独的文件夹中,每个文件夹都包含自己相同的DLL副本。谷歌搜索指出这是由于为错误的CPU编译DLL造成的。由于它适用于一个EXE,我不认为这是问题所在。
在我的Win7 PC和Win2003服务器上,两个EXE都运行良好。
导致此错误的原因是什么?
答案 0 :(得分:0)
确保两个项目(.EXE' s)使用相同的平台目标,例如在x86或x64上编译它们,具体取决于库的目标平台。
答案 1 :(得分:0)
.NET允许AnyCPU作为目标。这意味着相同的可执行文件可以作为32位和64位可执行文件运行。这很容易导致您的场景 - 您的一个应用程序被编译为AnyCPU,另一个被编译为32位。如果DLL是32位,则只有32位应用程序才有效。如果DLL是64位,只有AnyCPU应用程序可以工作。由于这适用于其他计算机,最好的办法是DLL为32位,而Win7和Win2k3 PC为32位,因此两个应用程序都以32位运行。
您可以在任务管理器中检查进程是以32位还是64位运行 - 32位进程具有<input type="text" class="input2">
后缀。