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

The type or namespace name 'HttpResponseMessage' could not be found

我已经验证 HttpResponseMessage 为 return 类型的文件设置为 "compile" 就像他们在这里说的那样:

我已经从 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 有关,但我不确定。

这个我也试过了

所以这是我的部分 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 使智能感知给出添加 using System.Net.Http; 而不是 using System.Web.Http; 的建议并且似乎确实修复了它。但是为什么?

所以我现在可以 post "answer":恢复到 4.7.1。所以问题是:为什么这样可以解决问题?

编辑

我已经手动从 packages.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 的包引用。但这也无济于事。我还尝试添加 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.

如果你有能力只安装它正在寻找的包,我总是这样做。通过 Visual Studio 在 NuGet 命令提示符中使用 "Install-Package System.Runtime -Version 4.2.1" 通常可以解决问题并消除错误,否则您将不得不在尝试时重定向到 4.3.0。希望这对您有所帮助!

.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/