代码分析错误无法在MVC4 Web API中加载文件或程序集“System.Net.Http,Version = 2.0.0.0”

时间:2012-08-25 09:20:15

标签: asp.net-web-api

此问题与此帖http://forums.asp.net/t/1807797.aspx/1?System+Net+Http+is+not+found和此on StackOverflow

完全相同

我拥有所有最新的RTM位,在.Net 4.5中启动了一个新的MVC 4,添加了WebAPI nuget包,现在我的代码分析失败,并出现与上述链接中报告的相同的错误。

  

CA0058运行代码分析错误CA0058:找不到引用的程序集“System.Net.Http,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”。此程序集是分析所必需的,并通过以下方式引用:C:\ Projects \ InHouse \ TimeRecorder \ StopGap \ TimeRec \ bin \ TimeRec.dll,C:\ Projects \ InHouse \ TimeRecorder \ StopGap \ packages \ Microsoft.AspNet.WebApi.Core .4.0.20710.0 \ LIB \ net40 \ System.Web.Http.dll。 [错误和警告] - (全球)

据我所知,RC版本似乎发生了这种情况,因为.NET 4.5框架System.Net.Http和WebApi版本的System.Net.Http之间存在冲突。

StackOverflow response关于从.Net 4.5降级到4.0的其他答案,由于显而易见的原因,这不是我首选的解决方案!

4 个答案:

答案 0 :(得分:71)

尝试以下方法:

  1. 根据您的Visual Studio版本导航至:
    • VS 2010
      %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop
    • VS 2012
      %ProgramFiles(x86)%\Microsoft Visual Studio 11.0\Team Tools\Static Analysis Tools\FxCop
  2. 打开FxCopCmd.exe.config并更改AssemblyReferenceResolveMode StrongName StrongNameIgnoringVersion
  3. 保存更改并重建项目。

答案 1 :(得分:5)

从Visual Studio 2012及更高版本,而不是修改安装文件,请使用此处指定的解决方法:Using Microsoft.Bcl.Async with Code Analysis causes errors

答案 2 :(得分:2)

我遇到了同样的问题(无法在本地和远程构建天蓝色)。 这个解决方法帮助我: http://connect.microsoft.com/VisualStudio/feedback/details/760208/nuget-package-for-asp-net-mvc-4-web-api-does-not-reference-correct-net-4-5-assemblies#

这是您需要的部分:

将packages \ Microsoft.Net.Http.2.0.20710.0 \ lib \ net40目录中包含的System.Net.Http.dll和System.Net.Http.xml文件复制到packages \ Microsoft.AspNet.WebApi。 Core.4.0.20710.0 \ lib \ net40目录。由于缺少的System.Net.Http.dll程序集现在与引用的System.Web.Http.dll程序集位于同一位置,因此代码分析现在可以正确解析冲突的System.Net.Http程序集。

答案 3 :(得分:0)

问题是由于您依赖于System.Net.Http的较新版本,而不是引用的其他程序集所需的版本。

解决此问题的正确方法是将dependentAssembly重定向添加到违规项目的app.config。禁用错误的已接受答案只是掩盖了潜在的问题。

将以下内容添加到runtime的{​​{1}}部分,以将无法解析的旧版本重新映射到项目中引用的版本。显然应该更新版本号以符合您的情况。

app.config