2

在 CI 上运行测试时 PDF 转换失败。我正在使用 GhostscriptsSharp 库进行转换。

在本地运行我的测试时我没有遇到这个问题,PDF 文件被正确转换为图像。

我一直在互联网上寻找解决方案,但到目前为止,我发现的每一件事都没有帮助我找到解决方案。

试图加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)

System.BadImageFormatException:试图加载格式不正确的程序。(HRESULT 异常:0x8007000B)在 GhostscriptSharp.GhostscriptWrapper.CreateAPIInstance(IntPtr& pintance, IntPtr caller_handle) 在 GhostscriptSharp.GhostscriptWrapper.CallAPI(String[] args) 在 GhostscriptSharp.GhostscriptWrapper.GeneratePageThumbs(String inputPath, String outputPath, Int32 firstPage, Int32 lastPage , Int32 宽度, Int32 高度) 在 Framework.Utils.FileUtils.ConvertPdfToImages(String pdfPath, String imagesPath, Int32 pageCount) 在 c:\TeamCity\buildAgent\work\8e7aa88e702dfaf7\Framework\Utils\FileUtils.cs:第 90 行在 StepDefinitions。 C 中的 General.Search.SearchTableSteps.ThenImagesAreCorrectInDownloadedDocumentFromSearchGrid(Table table):

4

4 回答 4

4

当尝试加载非 .NET 程序集(例如本机代码 DLL)时,通常会发生“格式不正确”错误,就好像它是 .NET 程序集或为不同平台编译的二进制文件(例如 32 位与 . 64 位)。使用诸如 ILSpy(用于托管程序集)或 Dependency Walker(用于本机 DLL)之类的工具来验证二进制文件的属性是否与进程的属性匹配。由于看起来第 3 方程序集 (GhostscriptSharp) 正在尝试加载,因此可能需要反映该程序集以确定错误与哪个文件有关。

于 2016-02-01T18:48:36.060 回答
3

If exception is thrown with message "An attempt was made to load a program with an incorrect format", this is likely due to the 32-bit file gsdll32.dll running on a 64-bit server. In , you must set "Enable 32-Bit Applications" to True for the Application Pool in which the application runs. Recycle the App Pool after making this change.

Derived from this answer.

于 2018-03-14T20:50:12.107 回答
0

在 xunit 的团队城市构建步骤下,在高级选项下有一个 .NET 运行时,带有一个用于平台的下拉菜单(通常是隐藏的)。这默认为运行 64 位 xunit.console.exe 的任何 CPU/MSIL。如果将其更改为 x86,它将使用 xunit.console.x86.exe 会成功。

于 2016-08-29T16:10:44.973 回答
0

我通过检查选项 Project->Properties->Build Platform target: Prefer 32-bit (如果 Platform target 设置为 Any CPU) 在 Visual Studio 2013 的项目中解决了同样的问题

于 2016-03-18T12:50:07.623 回答