Có cách nào để tự động cập nhật nuget.exe trong thư mục .nuget khi sử dụng khôi phục gói không?


92

Nhóm của tôi đã sử dụng tùy chọn Bật Khôi phục gói kể từ Nuget 1.5 để giữ các gói ngoài tầm kiểm soát nguồn của chúng tôi. Khi Nuget 1.6 được phát hành, chúng tôi nhận thấy sự cố không kéo các gói xuống và theo dõi nó xuống Nuget.exe trong thư mục .nuget cần cập nhật lên 1.6 để phù hợp với Trình quản lý gói.

Cách tốt nhất để cập nhật giải pháp khi Nuget đã được cập nhật là gì? Tôi không thấy cách dễ dàng từ studio để biết phiên bản nuget nào nằm trong thư mục giải pháp. Cho đến nay, chúng tôi đã xóa thư mục .nuget và chạy lại lệnh Bật Khôi phục gói.

Câu trả lời:


148

Tôi khuyên bạn nên cập nhật .nuget \ nuget.exe bằng lệnh này từ dòng lệnh:

nuget.exe update -self

[EDIT]: Đóng VS Solution trước. Nếu có bản cập nhật và giải pháp được mở, nuget.exe sẽ bị xóa khỏi giải pháp.

Bạn có thể tự động cập nhật nuget.exe khi khôi phục bằng cách sửa đổi .nuget \ nuget.targets để thêm lệnh trên. Tôi sẽ xem xét lệnh khôi phục trong đó làm ví dụ. Nhưng tôi không chắc liệu nó có xứng đáng hay không, các bản cập nhật nuget.exe không phổ biến và khả năng tương thích ngược sẽ rất hiếm khi bị hỏng.


Tôi đã thử điều này trên một trong những dự án của tôi. Nó đã cập nhật NuGet.exe nhưng có vẻ như nó đã xóa nó khỏi giải pháp của tôi. Tôi biết tôi có thể thêm lại nó, nhưng điều đó có vẻ kỳ quặc.
Rick

À đúng rồi, lần này tôi đã thử cập nhật thật và nuget.exe cũng bị xóa khỏi giải pháp VS đối với tôi. (Tôi đã không nhận được điều đó trước đây vì nuget.exe đã được cập nhật). Điều này xảy ra bởi vì trong quá trình cập nhật, nuget.exe hiện tại được chuyển đến nuget.exe.old đầu tiên nên tham chiếu tệp bị hỏng. Tôi nghi ngờ điều này sẽ được khắc phục, tôi đã chạy lệnh với giải pháp đã đóng.
Alexandre Dion

Có vẻ như việc tự cập nhật sẽ không cung cấp cho bạn tệp NuGet.targets mới, đây có thể là một vấn đề. Tôi nghĩ rằng nhóm NuGet đã thực hiện một số thay đổi đối với tệp mục tiêu giữa các phiên bản 1.6 và 1.7.
William Gross

@William Thật tuyệt, bạn có thể kiểm tra xem có bản cập nhật nào cho nuget.org/packages/NuGet.Build (đó là gói chứa nuget.targets)
Alexandre Dion

đã làm việc cho tôi, chỉ cần nhớ chạy cmd với tư cách quản trị viên
Mohammad

31

Tôi đã tìm thấy cách tốt nhất để xử lý điều này là chỉ cần xóa thư mục .nuget và bật lại khôi phục gói giải pháp. Như đã nói ở trên, bạn có thể thêm lệnh tự cập nhật vào bản dựng của mình, nhưng lệnh đó sẽ không cập nhật các tệp đích hoặc tệp cấu hình nếu có thay đổi giữa các phiên bản (hoặc xóa tham chiếu khỏi giải pháp của bạn). Có lẽ nó không phải là vấn đề lớn, nhưng đây là cách tốt nhất để đảm bảo bạn có các tệp exe và cấu hình mới nhất. Và vào cuối ngày, cập nhật chỉ là một vấn đề nếu bạn cần quyền truy cập vào một lệnh mới hoặc cuối cùng có một thay đổi đột ngột trong bản phát hành mới.


3
1 - Tôi đã tìm thấy rằng đây là cách tốt nhất để có được thông tin cập nhật đến NuGet.exe cũng như các NuGet.targetstập tin (mà cũng là quan trọng). Chỉ cần đảm bảo rằng bạn lưu bất kỳ tùy chỉnh nào bạn đã thực hiện vào NuGet.targetstệp (ví dụ: Nguồn gói tùy chỉnh) để bạn có thể áp dụng lại chúng cho tệp mới.
Jesse Webb

tuyệt vời đã làm việc cho tôi như sự quyến rũ !! cảm ơn vì thông tin
Gayan

-3

Xem bài đăng của David Ebbo tại blog của anh ấy

Về cơ bản, tất cả những gì bạn cần làm là tạo một tệp NuGet.Config bên cạnh tệp .sln của bạn, chứa:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear/>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" />
  </packageSources>
</configuration>

1
Câu hỏi hỏi cách tự động cập nhật nuget.exe lên phiên bản mới nhất khi sử dụng khôi phục gói. Bài đăng trên blog của David Ebbo chỉ giải thích cách khôi phục các gói bằng nuget.exe.
Sáu,

Có lẽ bạn nên xác định các phần của câu hỏi bạn trả lời sau đó, khi nhìn vào tiêu đề của câu hỏi và câu trả lời được chấp nhận, nó rất dễ dàng để xem xét câu trả lời này không đúng chỗ ...
Jens
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.