2012-04-11 2 views
83

Il mio team ha utilizzato l'opzione Abilita il ripristino dei pacchetti da Nuget 1.5 per mantenere i pacchetti fuori dal nostro controllo del codice sorgente. Quando Nuget 1.6 è stato rilasciato, abbiamo notato un problema in cui non stava scaricando i pacchetti e lo abbiamo rintracciato nel Nuget.exe nella cartella .nuget necessaria per l'aggiornamento alla 1.6 per abbinare il Gestore pacchetti.C'è un modo per aggiornare automaticamente nuget.exe nella cartella .nuget quando si utilizza il ripristino del pacchetto?

Qual è il modo migliore per aggiornare una soluzione una volta che Nuget è stato udpato? Non vedo un modo semplice da Studio per sapere quale versione di nuget si trova nella cartella della soluzione. Finora abbiamo spazzato via la cartella .nuget ed eseguito nuovamente il comando Enable Package Restore.

risposta

128

Vorrei suggerire l'aggiornamento .nuget \ nuget.exe con questo comando dalla riga di comando:

nuget.exe update -self 

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

È possibile aggiornare automaticamente nuget.exe al ripristino modificando il .nuget \ nuget.targets per aggiungere il comando precedente. Guarderei il comando di ripristino lì come un 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 rompersi molto raramente.

+0

Ho provato questo su uno dei miei progetti. Ha aggiornato NuGet.exe ma sembrava averlo rimosso dalla mia soluzione. So che posso aggiungerlo, ma mi sembrava strano. – Rick

+0

Ah, ho provato un aggiornamento vero questa volta e nuget.exe è stato rimosso dalla soluzione VS anche per me. (Non l'ho ricevuto in precedenza dal momento che nuget.exe era aggiornato). Succede perché durante l'aggiornamento il nuget.exe corrente viene spostato prima su nuget.exe.old, quindi il riferimento al file è rotto. Dubito che questo problema verrà risolto, eseguirò il comando con la soluzione chiusa. –

+0

Ok lo farà, grazie per l'aiuto. – Rick

31

Ho trovato il modo migliore per gestire questo è semplicemente eliminando la cartella .nuget e riabilitando il ripristino del pacchetto wide solution. Come detto sopra, potresti aggiungere un comando di auto aggiornamento alla tua build, ma questo non aggiornerà i target o i file di configurazione se ci sono cambiamenti tra le versioni (o rimuovi il riferimento dalla tua soluzione). Forse non è un grosso problema, ma questo è il modo sicuro per assicurarti di avere gli ultimi file di configurazione e di exe. E alla fine della giornata, l'aggiornamento è solo un problema se hai bisogno di accedere a un nuovo comando o alla fine c'è una rottura in una nuova versione.

+3

+1 - Ho trovato che questo è il modo migliore per ottenere aggiornamenti su 'NuGet.exe' * e * sul file' NuGet.targets' (che è anche importante). Assicurati solo di salvare le personalizzazioni che hai apportato al file 'NuGet.targets' (ad es. PackageSource personalizzate) per poterle riapplicare al nuovo file. –

+0

fantastico che ha funzionato per me come un incanto !! grazie per le informazioni – Gayan

-1

See David Ebbo's post at his blog

Fondamentalmente, tutto quello che dovete fare è creare un file NuGet.Config accanto al 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> 
+0

La domanda chiede come aggiornare automaticamente nuget.exe all'ultima versione quando si utilizza il ripristino del pacchetto. Il post di David Ebbo mostra solo come ripristinare i pacchetti usando nuget.exe. – Frith

+0

Probabilmente dovresti specificare quale parte della domanda rispondi, quindi quando guardi il titolo della domanda e la risposta accettata, è facile considerare questa risposta fuori luogo ... – Jens