在 windows 服务器 2012 r2 上部署时出现 BadImageFormatException

BadImageFormatException when deploying on windows server 2012 r2

我正在 Windows Server 2012 R2(x64) 上部署我的 Asp.net 应用程序。我在使用 64 位 dll 时收到 运行time BadImageFormatException。当我 运行 使用 IIS Express 或在本地计算机 IIS 上发布的应用程序时,一切正常(应用程序池 -> 解决方案名称 -> 启用 32 位应用程序设置为 False,解决方案中的所有项目也设置为平台目标 x64 ). Deploy 正在通过 Team City & Octopus Deploy。

解决方案是什么?

UPD System.BadImageFormatException: 试图加载格式不正确的程序。 (HRESULT 异常:0x8007000B)在 libxl.XmlBook.xlCreateXMLBookC() 在 xxx.Controllers.xxx.xxxController.LibxlTest() 在 C:\TeamCity\buildAgent\work\aeb63fe0b246a1f3\xxx\xxx\Controllers\xxx\xxx\xxxController.cs:line 597

Octopus Tentacle所在的服务器上没有这样的路径C:\TeamCity\buildAgent\

好的,您或您的一位推荐人似乎依赖于 libXL

您的异常结果(0x8007000B)肯定是 32 位无法在 64 位上加载的问题。

libXL 是 C++ 项目,在 download zip 中有一个 bin64 文件夹,其中包含 libxl.dll 的副本,可以在 64 位模式下工作。

如果您有 libXL 许可副本,最好使用其中的 64 位 dll。

请注意,C:\TeamCity\buildAgent\ 来自您构建项目的机器,行号等会保存到您的 pdb 文件中。

最后,它适用于 x86(来自 bin 文件夹)版本,而解决方案是为 x64 构建的。大概是libxl的一个特点吧。因此,我正在使用 x64 进行开发,并且在部署我的 post-deploy 脚本后将其更改为 x86 版本。