找不到类型或名称空间名称'HttpResponseMessage'

时间:2018-08-07 10:12:41

标签: c# nuget .net-4.7.2

我已经验证了将HttpResponseMessage作为返回类型的文件设置为“编译”,就像他们在这里说的那样:Why I cannot use HttpResponseMessage class?

我已经从packages.config迁移到packagereference(nuget),并拥有一个包含webapi的.net 4.7.2 mvc项目。它曾经工作过,但是在更新了Nuget之后再也没有了。我在使用system.web.http和框架中的4.0.0版本以及较新的4.x nuget时遇到了问题。

我的问题似乎与https://github.com/Microsoft/dotnet/issues/737有关,但我不确定。

我也尝试过这个https://stackoverflow.com/a/50095678/169714

这就是我的web.config的一部分:

<system.web>
<globalization fileEncoding="utf-8" culture="auto" uiCulture="auto" enableClientBasedCulture="true"/>
<compilation debug="true" targetFramework="4.7.2">
  <assemblies>
    <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </assemblies>
</compilation>
<httpRuntime targetFramework="4.7.2"/>

切换回4.7.1可以使intellisense提供建议添加using System.Net.Http;而不是using System.Web.Http;,并且似乎可以解决此问题。但是为什么呢?

因此,我现在可以发布“答案”:恢复为4.7.1。所以问题是:为什么能解决这个问题?

修改

我已从package.config手动移至packagereference并发现了这一点:Visual Studio 2017 - Could not load file or assembly 'System.Runtime, Version=4.1.0.0' or one of its dependencies 据说应该有一个迁移选项。但是我没有看到它,并删除了.config文件。我已经重新安装了大多数nuget软件包,但是即使安装了4.3.0 nuget,我也仍然停留在System.Runtime, Version=4.2.1.0上。通常,VS在调试信息中为我提供了一个选项,可以双击并重定向web.config中的程序集绑定。但是它不存在,所以也许是手动添加?

我也尝试添加

 <ItemGroup>
  <PackageReference Include="Legacy2CPSWorkaround" Version="1.0.0">
    <PrivateAssets>All</PrivateAssets>
  </PackageReference>
</ItemGroup>

所有其他nuget的packagereferences。但这也无济于事。我还尝试添加NetStandard.Library nuget,但这也无济于事...

添加

<dependentAssembly>
  <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.3.0" />
</dependentAssembly>

这也没有帮助。之前的web.config中没有system.runtime。它仍在尝试寻找System.Runtime, Version=4.2.1.0

2 个答案:

答案 0 :(得分:4)

.NET 4.7.2上不需要软件包或bindingRedirects。只需引用System.Net.Http并“使用System.Net.Http”就可以使HttpResponseMessage可用。

此问题与以下问题有关:https://github.com/dotnet/sdk/issues/2221

请安装Visual Studio 2017更新15.8。它将确保项目文件和依赖项适用于您的方案。

请参阅:https://blogs.msdn.microsoft.com/visualstudio/2018/08/14/visual-studio-2017-version-15-8/

答案 1 :(得分:0)

如果您有能力安装所需的软件包,我一直都会这样做。通过Visual Studio在NuGet命令提示符中使用“ Install-Package System.Runtime -Version 4.2.1”通常可以解决问题并消除错误,否则,您将必须重定向到4.3.0。重新尝试做。希望这会有所帮助!