ASP.NET 网站项目构建但发布时出错

ASP.NET Website Project builds but errors on publish

我们有一个使用 Visual Studio 2013 创建的 .NET 4 网站项目,它引用了 System.Net.Http .dll。

这是 web.config 中加载 .dll 的行:

<add assembly="System.Net.Http, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

项目构建正常,但当我们尝试“发布网站”时出现以下错误:

The type or namespace name ‘Http’ does not exist in the namespace ‘System.Net’ (are you missing an assembly reference?)

看起来程序集可能是从 GAC 加载的,我们已经尝试将程序集放在应用程序的 BIN 文件夹中,但这没有任何区别——它仍然显示为项目的 GAC 参考 属性页数。

我们还尝试添加:

<runtime>
    <assemblyBinding>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
        <codeBase version="1.0.0.0" href="/bin/System.Net.Http.dll"/>
      </dependentAssembly>
    </assemblyBinding>

这里建议:

但这好像也行不通

我们已将目标框架更改为 3.5 和 4.5,但没有任何效果。

我们尝试过从几台不同的机器发布。

编辑:我们已经尝试了 RobAda 中建议的 nuget 包,但没有达到预期的效果,我们仍然遇到错误。

我在朋友的应用程序上看到了同样的问题,我们需要深入研究,但最终发现您需要安装这个 nuget 包:

https://www.nuget.org/packages/Microsoft.Net.Http

然后您需要添加对 System.Net.Http 的引用,以使其不会产生所述错误。

听起来你好像在试图把某些东西塞进not/cannot合适的地方。

一种可能的架构方法是将功能分离到一个解决方案中。

如果时间限制是个问题,而且这是可能的,它可能是您问题的解决方案。

从长远来看:确保您与时俱进是值得的,因为随着时间的推移,您会遇到更多类似的问题,当然这必须务实地处理...