System.Net.Http - 无法加载文件或程序集,然后无法加载引用程序集以执行。

4
当我发布csproj时,会出现以下信息:
无法加载文件或程序集System.Net.Http
如果我将其添加到项目并重新发布,则会收到以下信息:
[BadImageFormatException:无法加载执行引用程序集。]
[BadImageFormatException:无法加载文件或程序集'System.Net.Http'
所以就像陷入了两难境地
这是我的web.config的system.web部分
  <system.web>
    <customErrors mode="Off" />
    <compilation debug="true" targetFramework="4.7.2" />
    <httpRuntime targetFramework="4.6" />
  </system.web>

如果存在,尝试从bin\Release文件夹中删除“System.Net.Http.dll”(或需要该命名空间的dll),然后它应该可以工作。 - Legion
这是在您的本地计算机上还是在发布环境上?这是 .NET Core 吗?.NET 的哪个版本? - Victor Procure
嗯...我正在思考我的环境问题,但是dll文件也应该存在于发布环境中,可能不在同一个文件夹下。 - Legion
从项目中删除该文件。看起来该文件已添加到项目中。我会使用记事本打开.proj文件并查找Http的位置。 - jdweng
感谢回复;这是在已发布的环境上发生的;我已经在原帖中添加了我的 web.config 的 system.web。 - robertocg72
2个回答

7

首先:

确保所有项目都指向同一版本的System.Net.Http,您可以在编译后检查 bin 文件夹手动验证。只需确保DLL版本相同即可。

然后, 确保所有的App.Config/Web.Config都有一个绑定重定向

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
</dependentAssembly>

最后,请确保您不会意外地使用64位可执行文件发布32位DLL。这也将导致“BadImageFormatException”。检查项目设置以确保针对正确的环境,然后检查依赖项以确保它们没有意外地拉取/发布错误的DLL。

请你详细说明一下:“最后,请确保不要意外地将32位的DLL与64位可执行文件一起发布。否则也会导致BadImageFormatException错误。” - Paradox

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接