无法加载文件或程序集 - 格式不正确 - 部分绑定

Could Not Load File or Assembly - Incorrect Format - Partial Binding

我正在尝试 运行 我本地机器上的现有解决方案,但每次我尝试 运行 它时,我都会收到下面的错误 [下图]。

Could not load file of assembly 'HtmlToPdfBuilder' or one of its dependencies. An attempt was made to load a program with an incorrect format'

我不确定它是否相关,但它也提供了有关部分绑定的信息

WRN: Partial binding information was supplied for an assembly

我找不到 dll "HtmlToPdfBuilder" 的来源,所以我无法检查是否有不同的版本。 我已将我的项目设置为针对 "Any CPU" 进行编译,但已尝试将其设置为 x64 和 x86,并且我还尝试在 IIS 中将 "Enable 32-bit Applications" 设置为 true 和 False。

dll 位于项目外部的文件夹中并被引用,我尝试将其移动到项目中并引用它(以防万一)。

完全相同的项目在其他人的机器上运行,我们尝试进行比较,但看不出任何设置差异。

我是 运行宁 Visual Studio 2012 年,这是一个 VB.NET 项目。

更新

这也是 运行在服务器上

您似乎正试图在 64 位应用程序(或反之亦然)上使用 32 位 dll,因此您应该使用以下内容。

  1. 打开 Visual Studio 命令提示符并键入 "corflags [pathTo]/[your assembly]",这将告诉您体系结构,因此您可以 change/verify 您拥有正确的 dll。
  2. 在 Visual Studio 上,转到引用属性并检查它的检索位置。然后相应地将刷新路径更改为您的 dll 路径,并将本地副本设置为 true。
  3. 重建并运行。
  4. 如果它也在 IIS 上 运行ning,请将启用 32 位应用程序设置为真。

以下是我最终解决此问题的方法:

  • 在命令提示符下重新注册了 .net 和 IIS

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -i

  • 创建了一个新的应用程序池(因为设置太多)
  • 在应用程序池上设置启用 32 位
  • 重新启动 IIS

我无法解释为什么这会起作用,因为在任何其他网站上都没有遇到任何问题,但我想我会分享它以防它对其他人有所帮助。