Esiste un modo per aggiornare automaticamente nuget.exe nella cartella .nuget quando si utilizza il ripristino del pacchetto?


92

Il mio team utilizza l'opzione Abilita ripristino pacchetto da Nuget 1.5 per tenere i pacchetti fuori dal nostro controllo del codice sorgente. Quando è stato rilasciato Nuget 1.6, abbiamo notato un problema per il quale non era in grado di estrarre i pacchetti e lo abbiamo rintracciato in Nuget.exe nella cartella .nuget necessario per l'aggiornamento a 1.6 per corrispondere al Package Manager.

Qual è il modo migliore per aggiornare una soluzione una volta che Nuget è stato aggiornato? Non vedo un modo semplice da Studio per dire quale versione di nuget è nella cartella della soluzione. Finora abbiamo spazzato via la cartella .nuget ed eseguito nuovamente il comando Abilita ripristino pacchetto.

Risposte:


148

Suggerirei di aggiornare .nuget \ nuget.exe con questo comando dalla riga di comando:

nuget.exe update -self

[EDIT]: Chiudi prima VS Solution. Se è presente un aggiornamento e la soluzione viene aperta, nuget.exe verrà rimosso dalla soluzione.

È possibile aggiornare automaticamente nuget.exe al ripristino modificando .nuget \ nuget.targets per aggiungere il comando precedente. Guarderei il comando di ripristino lì dentro come esempio. Ma non sono sicuro che ne valga la pena, gli aggiornamenti di nuget.exe non sono così comuni e la compatibilità con le versioni precedenti dovrebbe interrompersi molto raramente.


L'ho provato su uno dei miei progetti. Ha aggiornato NuGet.exe ma sembrava averlo rimosso dalla mia soluzione. So di poterlo aggiungere di nuovo, ma mi è sembrato strano.
Rick

Ah giusto, questa volta ho provato un vero aggiornamento e nuget.exe è stato rimosso anche dalla soluzione VS per me. (Non l'ho ricevuto in precedenza poiché nuget.exe era aggiornato). Succede perché durante l'aggiornamento l'attuale nuget.exe viene spostato prima in nuget.exe.old, quindi il riferimento al file viene interrotto. Dubito che questo verrà risolto, eseguo il comando con la soluzione chiusa.
Alexandre Dion

Sembra che l'aggiornamento automatico non fornisca un nuovo file NuGet.targets, il che potrebbe essere un problema. Penso che il team NuGet abbia apportato alcune modifiche al file di destinazione tra le versioni 1.6 e 1.7.
William Gross

@William Gross beh potresti controllare se c'è stato un aggiornamento a nuget.org/packages/NuGet.Build (questo è il pacchetto che contiene nuget.targets)
Alexandre Dion

ha funzionato per me, ricorda solo di eseguire cmd come amministratore
Mohammad

31

Ho trovato che il modo migliore per gestirlo è semplicemente eliminare la cartella .nuget e riattivare il ripristino del pacchetto a livello di soluzione. Come detto sopra, potresti aggiungere un comando di aggiornamento automatico alla tua build, ma ciò non aggiornerà le destinazioni oi file di configurazione se ci sono modifiche tra le versioni (o rimuoverà il riferimento dalla tua soluzione). Forse non è un grosso problema, ma questo è il modo sicuro per assicurarti di avere i file exe e di configurazione più recenti. E alla fine della giornata, l'aggiornamento è un problema solo se è necessario accedere a un nuovo comando o se alla fine si verifica una modifica sostanziale in una nuova versione.


3
+1 - Ho scoperto che questo è il modo migliore per ottenere aggiornamenti NuGet.exe sia per il NuGet.targetsfile (che è anche importante). Assicurati solo di salvare le personalizzazioni apportate al NuGet.targetsfile (ad es. PackageSources personalizzate) in modo da poterle riapplicare al nuovo file.
Jesse Webb

fantastico che ha funzionato per me come fascino !! grazie per l'informazione
Gayan

-3

Vedi il post di David Ebbo sul suo blog

Fondamentalmente, tutto ciò che devi fare è creare un file NuGet.Config accanto al tuo file .sln, contenente:

<?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
La domanda chiede come aggiornare automaticamente nuget.exe alla versione più recente quando si utilizza il ripristino del pacchetto. Il post sul blog di David Ebbo spiega solo come ripristinare i pacchetti utilizzando nuget.exe.
Venerdì

Probabilmente dovresti specificare a quale parte della domanda rispondi, quindi, guardando il titolo della domanda e la risposta accettata, è facile considerare questa risposta fuori luogo ...
Jens
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.