无法加载文件或程序集 - 格式不正确 - 部分绑定
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 项目。
更新
这也是 运行在服务器上
- 我已经尝试匹配我的 IIS 和网站设置
- 我已经尝试将所有 dll 从服务器复制到我的本地
机器,但仍然出现相同的错误
- 我也已经将所有本地 dll 复制到服务器和站点
仍然 运行 那里很好
- 我也匹配了webconfigs,唯一的区别是在服务器上entity framework设置为Version=4.3.1.0,本地是Version=6.0.0.0
您似乎正试图在 64 位应用程序(或反之亦然)上使用 32 位 dll,因此您应该使用以下内容。
- 打开 Visual Studio 命令提示符并键入 "corflags [pathTo]/[your assembly]",这将告诉您体系结构,因此您可以 change/verify 您拥有正确的 dll。
- 在 Visual Studio 上,转到引用属性并检查它的检索位置。然后相应地将刷新路径更改为您的 dll 路径,并将本地副本设置为 true。
- 重建并运行。
- 如果它也在 IIS 上 运行ning,请将启用 32 位应用程序设置为真。
以下是我最终解决此问题的方法:
- 在命令提示符下重新注册了 .net 和 IIS
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -i
- 创建了一个新的应用程序池(因为设置太多)
- 在应用程序池上设置启用 32 位
- 重新启动 IIS
我无法解释为什么这会起作用,因为在任何其他网站上都没有遇到任何问题,但我想我会分享它以防它对其他人有所帮助。
我正在尝试 运行 我本地机器上的现有解决方案,但每次我尝试 运行 它时,我都会收到下面的错误 [下图]。
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 项目。
更新
这也是 运行在服务器上
- 我已经尝试匹配我的 IIS 和网站设置
- 我已经尝试将所有 dll 从服务器复制到我的本地 机器,但仍然出现相同的错误
- 我也已经将所有本地 dll 复制到服务器和站点 仍然 运行 那里很好
- 我也匹配了webconfigs,唯一的区别是在服务器上entity framework设置为Version=4.3.1.0,本地是Version=6.0.0.0
您似乎正试图在 64 位应用程序(或反之亦然)上使用 32 位 dll,因此您应该使用以下内容。
- 打开 Visual Studio 命令提示符并键入 "corflags [pathTo]/[your assembly]",这将告诉您体系结构,因此您可以 change/verify 您拥有正确的 dll。
- 在 Visual Studio 上,转到引用属性并检查它的检索位置。然后相应地将刷新路径更改为您的 dll 路径,并将本地副本设置为 true。
- 重建并运行。
- 如果它也在 IIS 上 运行ning,请将启用 32 位应用程序设置为真。
以下是我最终解决此问题的方法:
- 在命令提示符下重新注册了 .net 和 IIS
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -i
- 创建了一个新的应用程序池(因为设置太多)
- 在应用程序池上设置启用 32 位
- 重新启动 IIS
我无法解释为什么这会起作用,因为在任何其他网站上都没有遇到任何问题,但我想我会分享它以防它对其他人有所帮助。