2012-08-25 35 views
28

這個問題是完全一樣的這篇文章http://forums.asp.net/t/1807797.aspx/1?System+Net+Http+is+not+found這一個on StackOverflow代碼分析錯誤無法加載文件或程序集「System.Net.Http,在MVC4的Web API版本= 2.0.0.0

我所有的最新的RTM位,在.Net 4.5中啓動一個新的MVC 4,添加了WebAPI nuget包,現在我的代碼分析失敗了,與上面鏈接報告的錯誤相同。

CA0058錯誤運行代碼分析CA0058:引用的程序集 'System.Net.Http,版本= 2.0.0.0,文化=中性公鑰= 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,原因很明顯,這不是我的首選解決方案!

+0

我也遇到過這個問題,你有沒有找到解決方案? –

+0

我無法重現VS 2012 RTM位的問題。有一件事很奇怪,MVC4中的每個MVC 4模板都已經安裝了web api包。爲什麼你必須重新安裝軟件包? –

+0

從Visual Studio 2012開始,更好的解決方法是:http://stackoverflow.com/questions/17298281/using-microsoft-bcl-async-with-code-analysis-causes-errors/17935400#17935400。 –

回答

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強名稱StrongNameIgnoringVersion
  3. 保存更改並重建您的項目。
+0

這對我有效,謝謝! –

+0

我有'CA0058'抱怨沒有找到我認爲引用的EntityFramework的一個版本,但自從升級。我很困惑,但這讓工具運行。在這種情況下,我會猜測版本並不重要,所以這對我很有好處。 – Chris

+1

這解決了症狀,而不是潛在的問題。我們有足夠的這類問題,因爲它不需要添加其他問題! – brumScouse

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#

這裏是您需要的部分:

複製包含在包System.Net.Http.dll和System.Net.Http.xml文件\ Microsoft.Net。 Http.2.0.20710.0 \ lib \ net40目錄到packages \ Microsoft.AspNet.WebApi.Core.4.0.20710.0 \ lib \ net40目錄。由於缺少的System.Net.Http.dll程序集現在與引用的System.Web.Http.dll程序集位於同一位置,因此代碼分析現在可以正確解決衝突的System.Net.Http程序集。

0

該問題是由於您對System.Net.Http的新版本的依賴性比引用的其他程序集之一所需的依賴項造成的。

解決此問題的正確方法是將dependentAssembly重定向添加到違規項目的app.config。禁用錯誤的接受答案只是掩蓋了一個潛在的問題。

將以下內容添加到app.configruntime部分,以將無法解析的舊版本重新映射到項目中引用的版本。版本號顯然應該更新以符合您的情況。

<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> 
+0

上面提到的解決方案對我不起作用, –

相關問題