2013-06-18 39 views
77

Tôi có ứng dụng ASP.NET MVC 4 được phát triển trong VS 2012. Ứng dụng 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 vài dự án thư viện đa năng.cảnh báo: Tất cả các dự án tham chiếu MyProject.csproj phải cài đặt gói nuget Microsoft.Bcl.Build

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 đã có sẵn trong tháng trước hoặc lâu hơn. Nếu tôi bấm vào Update Tất cả các nút sau đó các bản cập nhật được rõ ràng cài đặt mà không bất kỳ vấn đề rõ ràng, nhưng khi tôi xây dựng các giải pháp tôi nhận được thông báo lỗi này hai lần:

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

Ok, vì vậy tôi có hai dự án mà tham khảo MyProject: MyProject.Tests và MyProject.Azure. Tôi có thể kích chuột phải vào MyProject.Tests, chọn ManageNuGet Packages và thêm Microsoft.Bcl.Build. Điều đó thoát khỏi một trong hai cảnh báo. Nhưng VS không cho tôi tùy chọn quản lý 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?

EDIT:

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

+1

Cảm ơn sự tham chiếu đến vấn đề kết nối, đây là một vấn đề khó chịu. –

+0

Liên quan đến cảnh báo khi * xây dựng * dự án triển khai, cũng có lỗi gây 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] (https://connect.microsoft.com/VisualStudio/feedback/details/915281/unexpected-warning-when-publishing-solution-that-has-azure-cloud-services -and-a-tham chiếu-tới-the-microsoft-bcl-build-nuget-gói # tab). Tôi không biết cách giải quyết. –

+1

Vấn đề tương tự 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 sản lượng dự án aka. "Nhiệt"). Nó không có ý nghĩa gì đối với một dự án cài đặt WiX để cài đặt các gói NuGet! Argh !! – Jaans

Trả lời

51

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.

Sẽ an toàn để vô hiệu hóa đối với các dự án từ các dự án chưa hỗ trợ Nuget.

Xem phần dưới đây trong bold được sao chép từ Microsoft.Bcl.Build.targets.

BclBuildValidateNugetPackageReferences

mục tiêu này có thể được vô hiệu hóa cho một tài liệu tham khảo dự án bằng cách thiết lập SkipValidatePackageReferences = true cho tài liệu tham khảo:

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

Tôi nhận được lỗi xây dựng "Thuộc tính OutputPath không được đặt cho dự án ..." bất cứ khi nào tôi thêm "Thuộc tính> SkipValidatePackageReferences = true" vào thẻ ProjectReference . Bạn có biết tại sao? Tôi đã thử thay đổi thứ tự khai báo, nhưng nó không có sự khác biệt. –

+4

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

+4

@TheESJ Tôi gặp sự cố này với dự án WiX và trông giống như cài đặt AdditionalProperties thay vì Thuộc tính hoạt động. Tôi quan tâm đến việc biết lý do tại sao mặc dù –

15

tôi phải đối mặt với cùng một vấn đề và đã cố gắng để cập nhật Microsoft.Bcl. Build.targets; không giúp được gì.

Sau khi một số đ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à do đó đã quyết định đăng câu trả lời riêng. Nhờ @TheESJ.

54

Câu trả lời được cung cấp bởi TheESJ là chính xác, tuy nhiên từ ngữ không rõ ràng với tôi. Vì tôi không thể nhận xét về câu trả lời, tôi sẽ cung cấp thêm chi tiết tại đây. Cụ thể, tôi đã có vấn đề này với một dự án Azure và cách giải quyết sau đây được yêu cầu phải thực hiện các cảnh báo đi:

Khi bạn nhấp đúp vào các cảnh báo trong VisualStudio, bạn sẽ được đưa đến mục tiêu BclBuildValidateNugetPackageReferences trong Tệp Microsoft.BclBuild.targets. Phía trên phần tử đích thực tế, bạn nên tìm một khối chú thích lớn nói về việc vô hiệu hóa các 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 không thể cho các dự án Azure đó đáp ứng các yêu cầu của đích xây dựng cụ thể này.

Giải pháp? Vô hiệu hóa 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.

VÍ DỤ

Vì vậy, giả sử chúng ta có hai dự án: MyAzureProject.ccproj mà tham chiếu MyProject.csproj. Thực hiện 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 với "MyProject". Nó sẽ giống như thế:

    <ProjectReference Include="..\MyProject\MyProject.csproj"> 
        <Name>MyProject</Name> 
        <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project> 
        ... 
    </ProjectReference> 
    
  3. Thêm các yếu tố sau đây bên trong của phần tử ProjectReference:

    <Properties>SkipValidatePackageReferences=true</Properties> 
    
  4. tham khảo dự án của bạn bây giờ sẽ trông như thế này:

    <ProjectReference Include="..\MyProject\MyProject.csproj"> 
        <Name>MyProject</Name> 
        <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project> 
        ... 
        <Properties>SkipValidatePackageReferences=true</Properties> 
    </ProjectReference> 
    
  5. Ngay -nhấn vào "MyAzureProject" trong Solution Explorer và chọn "Reload Project".

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

+13

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

+1

Ý của bạn là 'MyAzureProject.ccproj' thay vì' MyAzureProject.csproj'? –

+1

+1 Cảm ơn bạn đã đánh vần mọi thứ! =] – Adriano

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