2013-06-17 12 views
26

Ho un pacchetto sul mio feed TeamCity NuGet, creato da TeamCity, ma un progetto TC dipendente non può vederlo durante il ripristino del pacchetto.NuGet Package Restore non trova il pacchetto, non ha Source

[14:05:02] [Exec] E: \ TeamCity-BuildAgent \ lavoro \ 62023563850993a7 \ Web.nuget \ nuget.targets (88, 9): Impossibile trovare la versione '1.0.17.0' di pacchetto "MarkLogicManager40".

[14:05:02] [Exec] E: \ TeamCity-BuildAgent \ work \ 62023563850993a7 \ Web.nuget \ nuget.targets (88, 9): errore MSB3073: il comando "" E: \ TeamCity- BuildAgent \ work \ 62023563850993a7 \ Web.nuget \ nuget.exe "installa" E: \ TeamCity-BuildAgent \ work \ 62023563850993a7 \ ProductMvc \ packages.config "-source" "-RequireConsent -solutionDir" E: \ TeamCity-BuildAgent \ work \ 62023563850993a7 \ Web \ "" terminato con il codice 1.

Nota che il parametro source nella riga di comando NuGet è vuota. Questa potrebbe essere la causa?

+0

Il metodo per aggiungere un feed NuGet personalizzato a TeamCity [è stato precedentemente indirizzato] (http://stackoverflow.com/questions/14548324/how-to-add-the-custom-nuget-feed-to-teamcity-build) –

+0

Ora conosco la risposta, conosco la domanda. –

risposta

37

A partire da oggi, NuGet.targets ha il seguente modo di specificare feed personalizzato (s):

<ItemGroup Condition=" '$(PackageSources)' == '' "> 
    <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used --> 
    <!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list --> 

    <PackageSource Include="https://nuget.org/api/v2/" /> 
    <PackageSource Include="\\MyShare" /> 
    <PackageSource Include="http://MyServer/" /> 
</ItemGroup> 

Un'altra opzione è quella di mettere NuGet.config accanto al file di soluzione:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    <add key="MyShare" value="\\MyShare" /> 
    <add key="MyServer" value="http://MyServer" /> 
    </packageSources> 
    <activePackageSource> 
    <add key="All" value="(Aggregate source)" /> 
    </activePackageSource> 
</configuration> 
+0

Il nuget.exe (riga di comando) utilizza le informazioni NuGet.targets? Sto eseguendo questo .............. C: \ MyProgFiles \ NuGet \ NuGet.exe installa ". \. Nuget \ packages.config" -ConfigFile ". \. Nuget \ nuget. config "-NoCache ............ e trova il pacchetto nel repository pubblico, ma non nel mio repository privato. Il file "\ .nuget \ NuGet.targets" esiste e ha l'ulteriore PackageSource (come si vede nel tuo post). Ma continuo a ricevere errori "Impossibile trovare la versione" (esiste) sul pacchetto nel repository privato. Grazie per qualsiasi aiuto. – granadaCoder

+1

@granadaCoder: usa l'argomento -Source. – abatishchev

+3

Grazie. Non sapevo che potresti fornire più origini delimitate da punti e virgola. Per i futuri lettori ::: -Source "https://www.nuget.org/api/v2/;http://myprivateserver/nuget/" – granadaCoder

8

Apparentemente i feed personalizzati di NuGet non vengono impostati tramite qualsiasi cosa nei file di soluzione o di progetto, o nuget.config nella soluzione, ma nel file nuget.config nel profilo dello sviluppatore.

Oltre a TeamCity, non c'è alcun controllo da parte dell'agente di questo file di configurazione, o la scrittura su di esso, per assicurarsi che contenga il feed per il server TeamCity stesso.

Quindi il ripristino del pacchetto su TC utilizzando un feed TC personalizzato non funzionerà correttamente. È necessario sprecare centinaia di sterline di denaro del cliente inseguendo la coda per scoprire tutto questo e quindi impostare/copiare il tuo nuget.config dal tuo profilo nel profilo dell'account utente che esegue l'agente di creazione.

Orribile.

+7

Per farlo funzionare con TeamCity utilizzando il codice sorgente registrato è possibile aggiungere le origini del pacchetto personalizzato al file NuGet.targets. Un altro modo è quello di utilizzare il runner NuGet Installer personalizzato come passo di costruzione prima di compilare la soluzione. Non sono sicuro del motivo per cui le origini del pacchetto nel file NuGet.config vengono ignorate presumibilmente perché il file personalizzato .targets non lo importa o non lo legge. –

+0

Ho cambiato la risposta per riflettere il metodo migliore. –

Problemi correlati