我建立了一个WinForms应用程序,使用PDFium打印PDF文档。我从NuGet安装了PDFium,它在我的项目中创建了两个子文件夹-x86和x64-如预期的那样,每个子文件夹里都有相应版本的pdfium.dll。我的应用程序目标平台设置为“任何CPU”。
当我在Windows 10 64位机器上以调试模式运行应用程序时,它完美地工作。但是,当我发布应用程序并在同一台计算机上实际安装时,PDFium会抛出异常:
"System.BadImageFormatException:尝试加载格式不正确的程序。(HRESULT异常:0x8007000B)"
经过一些研究,我将应用程序的目标平台更改为x86,并从我的项目中删除了x64子文件夹。现在,应用程序在发布后完美地工作,问题得到解决。
然而,我想知道是否有一种方法可以使我的应用程序支持x86和x64,并使用适用于目标计算机的适当版本的PDFium。如果能够在支持64位的机器上安装64位版本就更好了(我们组织内的大多数机器都支持64位,但如果必须选择其中之一,我感到需要选择32位以确保兼容性)。
当我在Windows 10 64位机器上以调试模式运行应用程序时,它完美地工作。但是,当我发布应用程序并在同一台计算机上实际安装时,PDFium会抛出异常:
"System.BadImageFormatException:尝试加载格式不正确的程序。(HRESULT异常:0x8007000B)"
经过一些研究,我将应用程序的目标平台更改为x86,并从我的项目中删除了x64子文件夹。现在,应用程序在发布后完美地工作,问题得到解决。
然而,我想知道是否有一种方法可以使我的应用程序支持x86和x64,并使用适用于目标计算机的适当版本的PDFium。如果能够在支持64位的机器上安装64位版本就更好了(我们组织内的大多数机器都支持64位,但如果必须选择其中之一,我感到需要选择32位以确保兼容性)。
PdfCommon.Initialize()
时,应该能够正确加载所需版本。 - xanatos