Integrare la funzionalità di ripristino del pacchetto NuGet nella procedura di checkout

5

Ci sono alcune situazioni in cui non ho una connessione internet e quindi sono costretto a lavorare offline. Di solito assomiglia a questo: mi collego, faccio un checkout dal server di controllo del codice sorgente e mi muovo dall'ufficio. I pacchetti NuGet rimangono sul server, perché ho abilitato il ripristino dei pacchetti e avrei dovuto aprire Visual Studio e aver generato una build almeno una volta, per scaricarli.

Prima di utilizzare NuGet, la gestione dei pacchetti era integrata usando gli elementi esterni SVN. Gli assembly richiesti sono stati scaricati automaticamente durante il checkout. Ma questo sistema ha alcune limitazioni, mi piacerebbe sbarazzarmi.

Il modo preferito per utilizzare il ripristino dei pacchetti è di eseguirlo al momento del checkout o dell'aggiornamento. C'è un modo per farlo, utilizzando ganci per SVN (TortoiseSVN) o GIT (TortoiseGIT, Github per Windows) come sistema di controllo della versione?

    
posta dwonisch 16.07.2014 - 15:35
fonte

2 risposte

1

Per Git puoi usare un hook post-commit. Per fare ciò, devi creare uno script eseguibile denominato post-checkout nella cartella .git/hooks nel repository. Nel file, si inserirà quanto segue:

/path/to/nuget.exe restore /path/to/solutionfile

Su Linux / Mac, procedi come segue:

#/bin/sh
mono /path/to/nuget.exe restore /path/to/solutionfile

e dovrebbe funzionare.

Questo verrà eseguito automaticamente dopo che il repository è stato ritirato. Per visualizzare ulteriori informazioni sul comando di ripristino di nuget, consulta qui .

    
risposta data 20.12.2015 - 01:52
fonte
0

Quanto segue non è una risposta diretta alla tua domanda, ma potrebbe risolvere il problema che ha portato alla domanda.

Abbiamo una singola directory nel controllo del codice sorgente in cui mettiamo tutto il .nupkg utilizzato dai nostri progetti. (Essendo una squadra relativamente piccola, questa directory non è troppo confusa.)

Colleghiamo questa directory nel controllo del codice sorgente alle directory del progetto, nel tuo caso questo sarebbe un SVN esterno.

Inoltre, abbiamo inserito un file Nuget.Config nella stessa directory del file .sln in cui aggiungiamo la directory estratta con i pacchetti come origine del pacchetto:

<!-- ... -->
<packageSources>
  <add key="LocalPackages" value="relative/path/to/checked/out/directory" />
  <!-- ... -->

Per assicurarti che il ripristino del pacchetto utilizzi sempre questa directory, puoi aggiungere

<activePackageSource>
  <add key="LocalPackages" value="relative/path/to/checked/out/directory" />
</activePackageSource>

ma questo ha lo svantaggio che la ricerca / installazione di nuovi pacchetti da nuget.org all'interno di un progetto utilizzando tale NuGet.Config richiede altri clic.

Di conseguenza, il check-out di un progetto controllerà tutti i pacchetti NuGet richiesti (e altri ancora, quale potrebbe essere un con) e NuGet / Visual Studio li ripristinerà felicemente senza una connessione di rete.

    
risposta data 20.11.2015 - 00:10
fonte

Leggi altre domande sui tag