2015-01-16 15 views
8

Tôi đang cố gắng cập nhật một gói duy nhất trong một csproj với nhiều phụ thuộc. Đó là, các tập tin packages.config trông như thế này:Làm thế nào để cập nhật một gói nuget đơn lẻ trong một dự án từ dòng lệnh?

<packages> 
    <package id="PackageA" version="1.2.1" targetFramework="net40" /> 
    <package id="PackageB" version="2.3.4" targetFramework="net40" /> 
    <package id="PackageC" version="1.0.0" targetFramework="net40" /> 
</packages> 

Tôi muốn cập nhật PackageA mà không cập nhật khác. Tôi thấy rằng Update-Package in the Visual Studio package manager has this capability, nhưng điều này cần phải chạy trên một máy xây dựng TFS.

Có cách nào để thực hiện điều này từ dòng lệnh không? Các quy trình làm việc dự kiến ​​là xây dựng máy chạy

  1. Nuget.exe khôi phục
  2. Nuget.exe cập nhật (trên mỗi file csproj)

Nhưng cập nhật lệnh không cho phép chúng tôi xác định gói nào cần cập nhật. Tôi biết có một thẻ allowedVersions cho các gói, nhưng điều đó sẽ yêu cầu chúng tôi thay đổi tệp packages.config khi tạo các nhánh khác nhau yêu cầu các thành phần khác nhau cập nhật hay không, trong khi dòng lệnh cụ thể, csproj cụ thể cho gói sẽ cho phép chúng tôi kết hợp các phụ thuộc để cập nhật với từng nhánh TFS thông qua các định nghĩa xây dựng của nó.

Trả lời

14

nuget.exe update có đối số -Id chỉ định dự án. Vì vậy, ví dụ:

nuget.exe update X.csproj -Id PackageA 
+0

Đây là câu trả lời hay. Tôi cũng thấy rằng (tùy thuộc vào thiết lập của bạn) bạn có thể chỉ cần tham khảo tệp .sln mà lần lượt cập nhật trong tất cả các tệp .csproj có liên quan trong giải pháp, nghĩa là; 'nuget cập nhật X.sln -Id PackageA'. Tôi cũng thấy rằng '-FileConflictAction OverWrite' (hoặc bỏ qua) có thể khá tiện dụng. – keithl8041

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