2014-07-13 9 views
10

Ho un feed del pacchetto NuGet privato in esecuzione, che utilizzo per condividere determinate funzioni ed estensioni tra i miei progetti. Funziona alla grande in Visual Studio, ma ultimamente ho iniziato a configurare una build di integrazione continua per uno dei miei progetti su Visual Studio Online, e sembra che VSO non possa vedere il mio feed privato.Aggiunta di feed di pacchetti Nuget privati ​​a Visual Studio Online

Sto utilizzando il nuovo metodo di ripristino del pacchetto, quello che comporta l'impostazione della casella di controllo "Consenti a NuGet di scaricare i pacchetti mancanti" nelle opzioni VS. Sono non utilizzando l'opzione "Abilita ripristino pacchetto NuGet" nel menu di scelta rapida della soluzione, poiché questo è in realtà the old way of doing it e causa problemi altrove.

Inoltre non sto facendo nulla che modifichi i miei file di progetto; Sto usando una definizione di build personalizzata (usando il materiale XAML Workflow) in modo che possa applicarla a uno qualsiasi dei miei progetti semplicemente selezionandola dal menu a discesa "Modello processo di compilazione" sotto l'editor di definizione build. Lo sto facendo in questo modo perché sto aggiungendo una serie di altri passaggi tra cui alcuni script post-build per facilitare la distribuzione automatizzata a un server di hosting; alcuni di questi passaggi sono un po 'complessi, quindi tenerli nel processo di creazione significa che devo solo impostarli una volta.

Quindi, senza utilizzare la vecchia soluzione di menu di scelta rapida che inserisce nuget.exe nella cartella della soluzione e senza fare scherzi con il progetto stesso, come posso ottenere la build di VSO per ripristinare i pacchetti dal mio feed privato?

Il modello del flusso di lavoro di build ha un'attività "NuGetRestore", che può assumere argomenti della riga di comando. Ho aggiunto il seguente:

"-source https://www.nuget.org/api/v2/ http://www.example.com/nuget" 

ma ciò non sembra fare la differenza. Questa attività ha anche un campo per "specificare le soluzioni che hanno bisogno dei loro pacchetti NuGet ripristinati", e l'ho appena impostato sulla variabile ProjectsToBuild che viene impostata quando si definisce la build. Non ricevo errori da nuget.exe (almeno, nessuno che io possa vedere), ma la compilazione fallisce. È interessante notare che dice che i namespace rilevanti non esistono, e non che i riferimenti non possono essere risolti. Qualche idea?

+0

Ho anche notato la sintassi nel comando era sbagliato. nuget restore -source "https://www.nuget.org/api/v2;https://www.myget.org/F/nuget". Le tue fonti devono essere separate da un punto e virgola. Questo e il mio esempio di configurazione dovrebbero risolvere questo. https://docs.nuget.org/consume/command-line-reference#restore-command – Jared

risposta

3

Credo che quello che devi fare è aggiungere un file NuGet.config a livello di soluzione. I file di configurazione di NuGet sono concatenati come web.config. È possibile trovare la documentazione here

Nuget primi carichi NuGet.config dal percorso predefinito, quindi carica qualsiasi file chiamato NuGet.config partendo dalla radice dell'unità corrente e termina nella directory corrente.

Sembrerà qualcosa di simile a questo:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageRestore> 
     <!-- Allow NuGet to download missing packages --> 
     <add key="enabled" value="True" /> 
     <!-- Automatically check for missing packages during build in Visual Studio --> 
     <add key="automatic" value="True" /> 
    </packageRestore> 
    <packageSources> 
     <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
     <add key="PrivateNugetName" value="http://your.nuget.server.com/nuget" /> 
    </packageSources> 
    <disabledPackageSources /> 
    <activePackageSource> 
     <add key="All" value="(Aggregate source)" /> 
    </activePackageSource> 
</configuration> 
Problemi correlati