编译时System.Net.Http类型不匹配

jen*_*ent 9 .net asp.net-web-api

自从.Net Framework Web Api2项目更新到.Net Framework 4.7.1并更新对现在本机System.Net.Http库的引用以来,我们现在在编译时(不是典型的运行时)得到以下错误.因此,装配绑定重定向无效.

类型'HttpResponseMessage'存在于'System.Net.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'和'System.Net.Http,Version = 4.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a 'SkinOnline.Web C:_dev\MapsOnline.Web\API\Controllers\Utilites\LongProcessController.cs

我不知道旧版本的来源 - 也许是项目依赖项之一.

编辑 后添加dll

C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.1

一旦在引用下,路径已更改为

C:\ VS2017 \的MSBuild \微软\ Microsoft.NET.Build.Extensions \net471\LIB\System.Net.Http.dll

这说版本是 4.2.0.0

jen*_*ent 7

所以实际上新的原生文件是版本4.2.0.0(不知道人们在这里做了什么,给定最新版本之前这个合并是4.3.3).

实际上我们确实需要绑定重定向.

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

没有它我会得到奇怪的运行时错误

System.MissingMethodException找不到方法:'System.Net.Http.HttpRequestMessage System.Web.Http.ApiController.get_Request()'.

  • 您可能还需要从项目中删除System.Net.Http引用才能进行构建。很多时候安装Nuget软件包会自动添加该引用,但指向错误的文件。 (3认同)