2015-01-16 17 views
8

Sto tentando di aggiornare un singolo pacchetto in un csproj con più dipendenze. Cioè, il file packages.config assomiglia a questo:Come aggiornare un singolo pacchetto nuget in un progetto dalla riga di comando?

<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> 

vorrei aggiornare PackageA senza aggiornare gli altri. Vedo che Update-Package in the Visual Studio package manager has this capability, ma questo deve essere eseguito su una macchina di compilazione TFS.

C'è un modo per farlo dalla riga di comando? Il flusso di lavoro previsto è la macchina di build in esecuzione

  1. Nuget.exe ripristinare
  2. aggiornamento Nuget.exe (su ogni file csproj)

Ma il comando aggiornamento non consente noi per specificare su quale pacchetto aggiornare. So che esiste un tagVersions consentito per i pacchetti, ma ciò richiederebbe la modifica del file packages.config quando si creano rami diversi che richiedono componenti diversi da aggiornare o meno, mentre una riga di comando specifica per il pacchetto specifica per csproj permettici di associare le dipendenze per aggiornare con ogni ramo TFS tramite le sue definizioni di build.

risposta

14

nuget.exe update ha un argomento -Id che specifica il progetto. Quindi, per esempio,

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

Questa è una buona risposta. Ho anche scoperto che (a seconda della configurazione) è sufficiente fare riferimento al file .sln che a sua volta esegue l'aggiornamento in tutti i file .csproj pertinenti all'interno della soluzione, ovvero; 'update nuget X.sln -Id PackageA'. Ho anche scoperto che '-FileConflictAction OverWrite' (o Ignore) può essere abbastanza utile. – keithl8041

Problemi correlati