cảnh báo: Tất cả các dự án tham chiếu đến MyProject.csproj phải cài đặt gói nuget Microsoft.Bcl.Build


90

Tôi có một ứng dụng ASP.NET MVC 4 được phát triển trong VS 2012. Ứng dụng này bao gồm một dự án chính (MyProject), một dự án thử nghiệm đơn vị (MyProject.Tests), một dự án triển khai Azure (MyProject.Azure) và một số các dự án thư viện đa năng.

Khi tôi nhấp chuột phải vào giải pháp hoặc dự án chính và chọn Quản lý gói NuGet, tôi thấy một loạt các bản cập nhật của Microsoft dường như đã có sẵn trong tháng trước hoặc lâu hơn. Nếu tôi nhấp vào nút Cập nhật Tất cả thì các bản cập nhật dường như đã được cài đặt mà không có bất kỳ sự cố rõ ràng nào, nhưng khi tôi xây dựng giải pháp, tôi nhận được thông báo lỗi này TWICE:

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build

Ok, vậy là tôi có hai dự án tham chiếu đến MyProject: MyProject.Tests và MyProject.Azure. Tôi có thể nhấp chuột phải vào MyProject.Tests, chọn ManageNuGet Packages và thêm Microsoft.Bcl.Build. Điều đó sẽ loại bỏ một trong hai cảnh báo. Nhưng VS không cung cấp cho tôi tùy chọn để quản lý các gói NuGet cho dự án MyProject.Azure .

Làm cách nào để thêm gói Microsoft.Bcl.Build vào dự án triển khai Azure?

BIÊN TẬP:

Nhờ sử dụng sưng , bây giờ tôi biết rằng một vấn đề Microsoft Connect cho vấn đề này đã được mở ở đây .


2
Cảm ơn bạn đã tham khảo vấn đề kết nối, đây là một vấn đề khó chịu.
Paul Keister

1
Liên quan đến cảnh báo khi xây dựng dự án triển khai, cũng có một lỗi gây ra cảnh báo giả khi xuất bản dự án. Lỗi liên quan đến xuất bản cũng được báo cáo trên Connect . Tôi không biết cách giải quyết khác.
Edward Brey

3
Vấn đề tương tự cũng xảy ra với tôi đối với các dự án WiX có tham chiếu đến các dự án khác (với mục đích thu hoạch đầu ra của dự án hay còn gọi là "nhiệt"). Không có ý nghĩa gì đối với một dự án trình cài đặt WiX để cài đặt các gói NuGet! Argh !!
Jaans

1
Các liên kết đến các vấn đề kết nối với doanh nghiệp trả 404 connect.microsoft.com/VisualStudio/feedback/details/789839/...
Ryan Gates

Câu trả lời:


54

Nếu bạn nhấp đúp vào cảnh báo, nó sẽ cung cấp cho bạn hướng dẫn để tắt cảnh báo.

Có thể an toàn để tắt đối với các tham chiếu dự án từ các dự án chưa hỗ trợ Nuget.

Xem phần bên dưới được in đậm được sao chép từ Microsoft.Bcl.Build.targets.

BclBuildValidateNugetPackageRefferences

Mục tiêu này có thể bị vô hiệu hóa đối với tham chiếu dự án bằng cách đặt SkipValidatePackageRefferences = true cho tham chiếu:

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>

4
Arthur, bạn có thể thử đặt giá trị siêu dữ liệu ExtraPropertes thay vì Thuộc tính không?
TheESJ

5
@TheESJ Tôi đang gặp sự cố này với một dự án WiX và có vẻ như đặt Thuộc tính bổ sung thay vì Thuộc tính hoạt động. Tôi muốn biết lý do tại sao
lc.

3
Điều này chỉ hoạt động để xây dựng giải pháp, nhưng khi bạn thực sự sử dụng 'Run' với dự án azure làm dự án khởi động của mình, bạn sẽ thấy các cảnh báo một lần nữa.
eoleary

2
Không hoạt động ngay cả khi xây dựng. VS 2015 phiên bản cộng đồng.
Artyom

2
Không hoạt động trong VS2015 Professional. Tôi có cùng một vấn đề khi thêm dòng này.
aclalex

63

Câu trả lời do TheESJ cung cấp là đúng, tuy nhiên tôi không rõ từ ngữ. Vì tôi không thể bình luận về câu trả lời, tôi sẽ cung cấp thêm chi tiết tại đây. Cụ thể, tôi đang gặp sự cố này với một dự án Azure và cần có giải pháp sau để làm cho cảnh báo biến mất:

Khi bạn bấm đúp vào cảnh báo trong VisualStudio, bạn sẽ được đưa đến mục tiêu BclBuildValidateNugetPackageRefferences trong tệp Microsoft.BclBuild.targets. Phía trên phần tử đích thực tế, bạn sẽ tìm thấy một khối bình luận lớn nói về việc tắt kiểm tra tham chiếu dự án. Vì các dự án Azure không thể có bất kỳ tham chiếu thư viện nào, nên các dự án Azure đó không thể đáp ứng các yêu cầu của mục tiêu xây dựng cụ thể này.

Giải pháp? Tắt kiểm tra tham chiếu từ dự án Azure vì không thể thực sự thêm tham chiếu gói nuget.

THÍ DỤ

Vì vậy, giả sử chúng ta có hai dự án: MyAzureProject.ccproj tham chiếu đến MyProject.csproj . Làm theo các bước sau:

  1. Nhấp chuột phải vào "MyAzureProject" trong Solution Explorer và chọn "Chỉnh sửa tệp dự án."
  2. Tìm tham chiếu dự án tới "MyProject." Nó sẽ trông giống như sau:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. Thêm phần tử sau vào bên trong phần tử ProjectReference:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. Tham chiếu dự án của bạn bây giờ sẽ giống như sau:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. Nhấp chuột phải vào "MyAzureProject" trong Solution Explorer và chọn "Tải lại dự án".

Bây giờ bạn có thể xây dựng lại và lỗi sẽ biến mất.


17
Trong phiên bản VS của tôi, trước tiên, tôi phải nhấp chuột phải và "Dỡ dự án" trước khi có thể nhấp chuột phải để chỉnh sửa tệp dự án
pius

2
Ý bạn là MyAzureProject.ccprojđúng hơn là MyAzureProject.csproj?
Edward Brey,

Nó chỉ hoạt động nếu tôi thêm '<Properties> SkipValidatePackageRefferences = true </Properties>' vào tệp dự án được tham chiếu * .csproj. Chỉ chỉnh sửa * .ccproj không hoạt động.
alexey

1
@pius Đây là một tính năng nhỏ, nhưng có một tùy chọn menu ngữ cảnh 'Chỉnh sửa tệp dự án' trong 'Lệnh nguồn' trong Công cụ năng suất năng suất , có sẵn cho một số phiên bản của VS. Nó sẽ dỡ bỏ dự án và mở tệp dự án cho bạn bằng một cú nhấp chuột.
Jeff,

16

Tôi gặp phải vấn đề tương tự và đang cố cập nhật Microsoft.Bcl.Build.targets; mà không giúp được gì.

Sau một số cuộc điều tra phát hiện ra rằng tệp .csproj của dự án Dịch vụ Azure phải được sửa đổi để bao gồm<Properties>SkipValidatePackageReferences=true</Properties> .

Điều này không rõ ràng từ câu trả lời của @TheESJ và vì vậy quyết định đăng câu trả lời riêng biệt. Cảm ơn @TheESJ.


2

Tôi đã gặp sự cố này một số lần và phương thức Thuộc tính thực sự hoạt động, nhưng khi xử lý một dự án Wix, thay vào đó tôi phải làm như sau:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Khi tôi sử dụng nút Thuộc tính Xml, tôi gặp lỗi mới:

Thuộc tính OutputPath không được đặt cho dự án 'MyInstallerProject.csproj'. Vui lòng kiểm tra để đảm bảo rằng bạn đã chỉ định sự kết hợp hợp lệ giữa Cấu hình và Nền tảng cho dự án này. Cấu hình = 'Gỡ lỗi' Platform = 'x86'. Lỗi này cũng có thể xuất hiện nếu một số dự án khác đang cố gắng thực hiện theo tham chiếu từ dự án này sang dự án khác cho dự án này, dự án này đã bị dỡ bỏ hoặc không được bao gồm trong giải pháp và dự án tham chiếu không được xây dựng bằng cách sử dụng cùng một hoặc tương đương Cấu hình hoặc Nền tảng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.