2012-08-25 26 views
28

vấn đề này là chính xác giống như bài này http://forums.asp.net/t/1807797.aspx/1?System+Net+Http+is+not+found và điều này một on StackOverflowlỗi Phân tích Mã Không thể tải tập tin hoặc lắp ráp 'System.Net.Http, Version = 2.0.0.0 trong MVC4 Web API

tôi có tất cả các bit RTM mới nhất, Bắt đầu một MVC 4 mới trong .Net 4.5, thêm gói WebAPI nuget và bây giờ phân tích mã của tôi không thành công với cùng một lỗi như được báo cáo trong liên kết ở trên.

CA0058 Lỗi khi chạy phân tích mã CA0058: Cụm tham chiếu 'System.Net.Http, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' không thể tìm thấy. Hội đồng này là cần thiết để phân tích và được tham chiếu bởi: 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. [Lỗi và cảnh báo] - (Toàn cầu)

Từ những gì tôi có thể thấy điều này dường như xảy ra với các phiên bản RC vì có xung đột giữa .NET 4.5 framework System.Net.Http và phiên bản WebApi của System.Net.Http.

Các câu trả lời khác trên số StackOverflow response nói về việc hạ cấp từ .Net 4.5 xuống 4.0, vì những lý do hiển nhiên, đây không phải là giải pháp ưa thích của tôi!

+0

Tôi cũng gặp sự cố này, bạn đã tìm thấy giải pháp chưa? –

+0

Tôi không thể repro vấn đề với VS 2012 RTM bit. Một điều lạ với tôi là mỗi mẫu MVC 4 trong MVC4 đã cài đặt gói api web. Tại sao bạn phải cài đặt lại gói? –

+0

Bắt đầu từ Visual Studio 2012, giải pháp tốt hơn là: http://stackoverflow.com/questions/17298281/using-microsoft-bcl-async-with-code-analysis-causes-errors/17935400#17935400. –

Trả lời

71

Hãy thử như sau:

  1. Tùy thuộc vào Visual Studio phiên bản của bạn hướng tới:
    • 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. Mở FxCopCmd.exe.config và thay đổi AssemblyReferenceResolveMode từ StrongName to StrongNameIgnoringVersion.
  3. Lưu thay đổi và xây dựng lại dự án của bạn.
+0

Điều này làm việc cho tôi, cảm ơn! –

+0

Tôi đã khiếu nại 'CA0058' về việc không tìm phiên bản EntityFramework mà tôi cho là tham chiếu, nhưng kể từ đó đã được nâng cấp từ. Tôi đã bối rối, nhưng điều này có công cụ chạy. Tôi sẽ đoán phiên bản không quan trọng trong trường hợp này, vì vậy điều này là tốt cho tôi. – Chris

+1

Điều này giải quyết các triệu chứng, không phải vấn đề cơ bản. Chúng tôi có đủ loại vấn đề này vì không cần thêm người khác! – brumScouse

2

Tôi đã gặp phải sự cố tương tự (không thể xây dựng cục bộ và từ xa trên Azure). workaround này đã giúp tôi: 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#

đây là phần bạn cần:

Sao chép các tập tin System.Net.Http.dll và System.Net.Http.xml chứa trong các gói \ Microsoft.Net. Thư mục Http.2.0.20710.0 \ lib \ net40 vào thư mục \ Microsoft.AspNet.WebApi.Core.4.0.20710.0 \ lib \ net40. Kể từ khi hội tụ System.Net.Http.dll còn thiếu bây giờ nằm ​​ở cùng vị trí với assembly System.Web.Http.dll được tham chiếu, việc phân tích mã có thể giải quyết đúng cách việc lắp ráp System.Net.Http xung đột.

0

Sự cố là do bạn có sự phụ thuộc vào phiên bản mới hơn của System.Net.Http, so với yêu cầu của một trong các hội đồng khác được tham chiếu.

Cách chính xác để giải quyết vấn đề này là thêm dependentAssembly chuyển hướng đến app.config của các dự án vi phạm. Câu trả lời được chấp nhận về việc vô hiệu hóa các lỗi chỉ che giấu một vấn đề cơ bản.

Thêm phần sau vào phần runtime của app.config để remap phiên bản cũ không thể giải quyết được cho phiên bản được tham chiếu trong dự án của bạn. Số phiên bản rõ ràng nên được cập nhật để tương ứng với tình huống của bạn.

<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

Giải pháp được đề cập ở trên không hiệu quả đối với tôi, –

Các vấn đề liên quan