2013-05-25 37 views
20

Tôi đang có một phiên tái cấu trúc đặc biệt khó khăn liên quan đến giải pháp C# với nhiều dự án trong Visual Studio 2012. Tôi cần rút một loạt mã vào các hội đồng của riêng họ để mã có thể được chia sẻ trên nhiều dự án. dung dịch. Tuy nhiên, không có vấn đề gì tôi cố gắng, tôi nhận được cảnh báo cho các dự án tham khảo các dự án chia sẻ mới rằng "Tất cả các dự án tham chiếu {shared project name} phải cài đặt gói nuget Microsoft.Bcl.Build".Tất cả các dự án tham chiếu tiểu dự án phải cài đặt gói NuGet Microsoft.Bcl.Build (C#/Windows Phone 7)?

Tôi đã qua các dự án phụ thuộc và các dự án được chia sẻ bằng lược răng, xác minh chi tiết rằng tất cả đều sử dụng cùng một phiên bản và cùng một DLL chính xác cho Microsoft.Bcl phiên bản 1.0.1.19 và Microsoft.Bcl. async phiên bản 1.0.16 gói:

  • System.Runtime
  • System.Threading.Tasks

  • Microsoft.Threading.Task

  • Microsoft. Threading.Tasks.Extensions
  • Microsoft.Threading.Tasks.Extensions.Phone

Các đường dẫn DLL đều giải quyết và giống hệt nhau. Các tập tin XAP không xây dựng nhưng tôi vẫn nhận được rằng cảnh báo nói với tôi rằng Microsoft.Bcl.Build không được tham chiếu trong các dự án phụ thuộc, mặc dù thực tế là tôi có thể thấy rằng nó được.

Nếu tôi thử thay vì gỡ cài đặt và sau đó cài đặt lại hai gói đó bằng NuGet cho từng dự án, tôi nhận tham chiếu với đường dẫn trống và biểu tượng cảnh báo cho tham chiếu 5 DLL liên quan. Vì một số lý do, NuGet thêm các tham chiếu nhưng không thể tìm thấy các tệp DLL. Ngoài ra, nếu tôi làm điều này, tôi thấy mình gặp sự cố thường xuyên khi có dự án mà tôi gặp phải lỗi "Không thể thêm tham chiếu" khi cố gắng thêm tham chiếu. Sau đó, tôi đã đóng và mở lại giải pháp và dẫn đến lỗi "dự án không tải được". Vì vậy, tôi phải chỉnh sửa tệp dự án theo cách thủ công, xóa các câu lệnh nhập gói bị lỗi và tải lại dự án.

Làm cách nào để khắc phục sự cố này và kỹ thuật chung để tránh đau đầu này trong tương lai là gì? Để NuGet quản lý các gói bị thiếu không giúp ích gì cho al.

Trả lời

6

Tôi chỉ đến Xuyên cùng một vấn đề và lỗi được mở ra ở đây: http://nuget.codeplex.com/workitem/3268

Những gì tôi đã làm là những điều sau đây, tôi thêm vào cấp giải pháp gói Microsoft.Bcl.Build

Trong env dev của tôi nếu bạn không có gói tải, chỉ cần nhấp chuột phải vào giải pháp và chọn quản lý gói nuget, bạn sẽ thấy một thanh màu vàng với nút khôi phục, chỉ cần nhấp vào nó và bạn sẽ ổn.

Trong xây dựng kịch bản của tôi trước khi soạn thảo dự án Tôi chạy lệnh này:

.\myproject\.nuget\NuGet.exe install .\myproject\.nuget\packages.config -OutputDirectory .\myproject\packages 

này sẽ khôi phục lại các gói giải pháp cấp độ và bạn sẽ ổn thôi.

Điều này sẽ được khắc phục vào cuối mùa hè này trong phiên bản 2.7 theo báo cáo vấn đề

+0

Tôi vừa cập nhật gói NuGet trong ứng dụng của mình và giờ tôi nhận được thông báo cảnh báo tương tự về việc cần cài đặt Microsoft.Bcl.Build. Tôi không biết điều này "khôi phục" toàn bộ điều gì đang được thảo luận. Tôi không thấy bất kỳ dấu hiệu nào của "thanh màu vàng có nút khôi phục". Giải pháp của tôi chứa dự án triển khai Azure tham chiếu đến dự án chính, nhưng giao diện người dùng Visual Studio 2012 không cung cấp tùy chọn menu ngữ cảnh để quản lý gói NuGet cho dự án đó. Bất kỳ suy nghĩ hoặc gợi ý nào? –

+0

@ Bob.at.SBS đóng VS. Trong tệp explorer, mở thư mục giải pháp của bạn, đi vào thư mục .nuget và chỉnh sửa packages.config của bạn. Thêm dòng này vào nút gói. Bây giờ, mở lại giải pháp của bạn và nhấp chuột phải vào giải pháp của bạn -> Quản lý gói Nuget cho giải pháp. Thanh màu vàng sẽ xuất hiện. – Swell

+0

Để hoàn thành câu trả lời của tôi, Microsoft.Bcl.Build là một tệp đích, VS yêu cầu nó tải dự án của bạn. Khi bạn nhấn khôi phục, nó sẽ khôi phục lại gói và bạn sẽ có thể tải lại các dự án bị thiếu! – Swell

16

Trong trường hợp bất cứ ai khác đi qua này và giải pháp @ Swell đã khiến bạn đi "wtf":

Gần đây tôi đã trải qua một dự án MVC cũ và cập nhật nó (cập nhật dao cạo, asp, http , vv gói nuget). Các dự án, độc lập của chính nó, được xây dựng tốt, nhưng khi tôi đã đi đến xuất bản nó không thành công với các lỗi của OP.

Hóa ra đó là vì tôi không cập nhật dự án *.Tests được liên kết với nó (nên đã tìm ra, mặc dù không chắc chắn lý do tại sao thử nghiệm là rằng gắn liền với dự án). Vì vậy, để khắc phục:

  1. Nhấp chuột phải vào Giải pháp và quản lý gói nuget.
  2. Đi qua tất cả các gói đã được cập nhật trong dự án web và áp dụng chúng cho các dự án khác (mỗi "Cập nhật" sẽ hiển thị một cây với các dự án có thể áp dụng, tôi đã ổn khi nhấp OK).
  3. Xây dựng lại.

Bây giờ bạn nên khỏe và không nên sủa vào bạn. Hy vọng rằng sẽ giúp người khác.

+0

Câu trả lời của tôi giải quyết vấn đề khôi phục gói nuget và tải dự án không thành công. – Swell

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