2015-09-09 16 views
11

Tôi đang làm việc trên dự án C# bằng Visual Studio 2015, với NuGet để quản lý gói. Đối với một tài liệu tham khảo, tôi muốn tạm thời sử dụng một xây dựng địa phương trong khi tôi đang lặp trên một sửa chữa, chứ không phải là phiên bản phát hành. Cách tốt nhất để thực hiện việc này là gì?Làm thế nào để tạm thời thay thế tham chiếu NuGet bằng địa chỉ xây dựng

Nếu tôi đang sử dụng SVN bên ngoài, tôi sẽ thả các bản sao được tạo cục bộ mới vào thư mục tham chiếu bên ngoài và được đặt. Phần mềm quản lý gói khác (như CocoaPods) sẽ cho phép tôi trỏ đến một thư mục cục bộ để giải quyết tham chiếu. Với NuGet, có vẻ như không có cơ chế nào cho việc này.

Khi tôi thử bỏ DLL mới của mình qua tham chiếu gói bên trong thư mục packages, tôi nhận được hành vi không nhất quán trong Visual Studio. Xây dựng của tôi sẽ thất bại với hàng trăm lỗi, hầu hết trong số đó sẽ biến mất khỏi Danh sách Lỗi nhanh chóng. Tôi cuối cùng còn lại với một cảnh báo nói với tôi nó không thể giải quyết các tài liệu tham khảo để lắp ráp tôi đang cố gắng để thay thế (mặc dù các thuộc tính của tài liệu tham khảo cho biết nó tìm phiên bản mới của tôi).

+0

này nghe có vẻ giống như một [XY-Vấn đề] (http://meta.stackexchange.com/questions/66377/what-is-the-xy -problem) - Tại sao bạn muốn đạt được điều này? –

+0

Tôi đang cố gắng kiểm tra mã thư viện chưa hoàn thành trong ứng dụng của tôi sử dụng nó. Vì nó chưa hoàn thành, tôi chưa sẵn sàng cam kết và xuất bản các thay đổi của mình. – Dov

+0

Bạn biết đấy, rằng SemVer sau đây và có một kho lưu trữ cục bộ không giải quyết được vấn đề của bạn ... Vấn đề với việc commit các gói beta là gì? Mặc dù, tôi hiểu chi phí bổ sung (mà tôi đang phải đối mặt ...) –

Trả lời

4

Bạn có thể tạo thức ăn của riêng bạn NuGet (thư mục địa phương đơn giản + một số cấu hình)

đọc thêm ở đây Hosting Your Own NuGet Feeds

+1

Có cách nào để chuyển sang nguồn gói thư mục cục bộ không phải là gỡ cài đặt khỏi gói cũ và sau đó cài đặt lại không? Điều đó không quá đơn giản, như trong giải pháp tôi đang làm việc trên đó là 20 dự án, chỉ có 5 dự án sử dụng thư viện. Nó không phải là không thể vượt qua, nhưng gây phiền nhiễu. – Dov

7

Tôi tìm thấy cách giải quyết sau đây hữu ích cho tôi:

Trước tiên tôi vô hiệu hóa "NuGet Package Khôi phục "từ trình đơn ngữ cảnh của Giải pháp.

Sau đó, tôi chuyển đến thư mục gói và tìm gói tôi muốn thay thế. Từ gói này, tôi lấy số phiên bản và sử dụng số phiên bản chính xác này để tạo dll mà tôi muốn trao đổi.

Sau đó tôi có thể trao đổi dll trong thư mục gói với dll mới được xây dựng này. Xây dựng dự án bây giờ sử dụng dll mới này.

Sau khi thiết lập này một lần, tôi có thể dễ dàng tạo dll mới và sao chép chúng vào thư mục gói.

+2

vô hiệu hóa "NuGet Package Restore" là không cần thiết –

+0

Đây là một giải pháp tuyệt vời, không phiền phức. Đã làm cho tôi! – Dan

+0

Tôi gặp lỗi khi tôi thử điều này - "Assembly {assembly path} phải được ký mạnh để được đánh dấu là điều kiện tiên quyết". –

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