28

这个问题与这篇文章完全相同http://forums.asp.net/t/1807797.aspx/1?System+Net+Http+is+not+foundStackOverflow 上的这个

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

CA0058 错误运行代码分析 CA0058:找不到引用的程序集“System.Net.Http,版本=2.0.0.0,文化=中性,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 响应上的其他答案谈到从 .Net 4.5 降级到 4.0,出于显而易见的原因,这不是我的首选解决方案!

4

4 回答 4

71

尝试以下操作:

  1. 根据您的 Visual Studio 版本,导航到:
    • 与 2010 年相比
      %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop
    • 与 2012 年相比
      %ProgramFiles(x86)%\Microsoft Visual Studio 11.0\Team Tools\Static Analysis Tools\FxCop
  2. 打开FxCopCmd.exe.configAssemblyReferenceResolveModeStrongName更改为StrongNameIgnoringVersion
  3. 保存更改并重建您的项目。
于 2012-10-11T19:24:36.860 回答
5

从 Visual Studio 2012 及更高版本开始,不要修改安装文件,而是使用此处指定的解决方法:将 Microsoft.Bcl.Async 与代码分析一起使用会导致错误

于 2013-08-02T18:35:32.230 回答
2

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

这是您需要的部分:

将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 程序集。

于 2013-04-24T10:25:44.857 回答
0

导致此问题的原因是,您依赖于较新版本的System.Net.Http,而不是所引用的其他程序集之一所需的版本。

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

将以下内容添加到 的runtime部分,app.config以将无法解析的旧版本重新映射到项目中引用的版本。版本号显然应该根据您的情况进行更新。

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
于 2013-11-06T21:21:44.050 回答