2014-06-12 19 views
6

Sto davvero impazzendo qui con nuget e la creazione di una soluzione in Visual Studio Team Services (visualstudio.com). Qualsiasi aiuto sarà molto apprezzato.nuget pacchetti non scaricati in Visual Studio Team Services (visualstudio.com) (Ripristino pacchetto automatico)

Ho una soluzione contenente 36 progetti. Molti progetti utilizzano gli stessi 5 o 6 pacchetti di nuget. Ho seguito attentamente le istruzioni per Migrating MSBuild-Integrated solutions to use Automatic Package Restore e quindi ho una cartella .nuget nella mia cartella della soluzione che contiene un solo file NuGet.Config e non contiene più file Nuget.exe o Nuget.targets. Tutti i progetti hanno avuto le loro linee Nuget.targets rimosse.

Utilizzo Visual Studio 2013 Professional (v12 Update 2) e la soluzione viene creata localmente senza errori o avvisi. Anche dopo la pulizia e l'eliminazione della cartella dei pacchetti, questa viene scaricata e compilata correttamente. La cartella dei pacchetti NON è selezionata in Visual Studio Team Services.

Esaminando il log di compilazione suggerisce che:

  1. NuGet non ha calci dentro all'inizio della creazione al fine di verificare la presenza, scaricare e decomprimere qualsiasi pacchetto irrisolti (che stava facendo questo prima di migrare da MSBuild- Integrato per il ripristino automatico dei pacchetti - tuttavia, non è stato in grado di risolvere i riferimenti)
  2. Sono rimasto con 113 errori, incentrati sul fatto che i progetti non erano in grado di risolvere i riferimenti.
  3. A differenza di una build locale (e MSBuild-Integrated), Visual Studio Team Services ora non ha nemmeno menzionando nuget nel suo log di compilazione !!!

Un esempio del registro dove le cose iniziano a fallire (anche se questo è, ovviamente, perché NuGet non è intervenuta):

Project "C:\a\src\TFS\RSPlatform\Main\Source\RSPlatform Team Project.sln" (1) is building "C:\a\src\TFS\RSPlatform\Main\Source\Support\A2Refresh\A2Refresh.csproj" (8) on node 1 (default targets). 
PrepareForBuild: 
    Creating directory "obj\Release\". 
ResolveAssemblyReferences: 
    Primary reference "Bytescout.Spreadsheet". 
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Bytescout.Spreadsheet". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [C:\a\src\TFS\RSPlatform\Main\Source\Support\A2Refresh\A2Refresh.csproj] 
      For SearchPath "C:\a\src\TFS\RSPlatform\Main\Source\Support\A2Refresh\FakesAssemblies". 
      Considered "C:\a\src\TFS\RSPlatform\Main\Source\Support\A2Refresh\FakesAssemblies\Bytescout.Spreadsheet.winmd", but it didn't exist. 
      Considered "C:\a\src\TFS\RSPlatform\Main\Source\Support\A2Refresh\FakesAssemblies\Bytescout.Spreadsheet.dll", but it didn't exist. 
      Considered "C:\a\src\TFS\RSPlatform\Main\Source\Support\A2Refresh\FakesAssemblies\Bytescout.Spreadsheet.exe", but it didn't exist. 
      For SearchPath "{HintPathFromItem}". 
      Considered "..\..\packages\Bytescout.Spreadsheet.2.4.0.1346\lib\net45\Bytescout.Spreadsheet.dll", but it didn't exist. 
      For SearchPath "{TargetFrameworkDirectory}". 
      Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Bytescout.Spreadsheet.winmd", but it didn't exist. 
      Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Bytescout.Spreadsheet.dll", but it didn't exist. 
      Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Bytescout.Spreadsheet.exe", but it didn't exist. 
      Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\Bytescout.Spreadsheet.winmd", but it didn't exist. 
      Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\Bytescout.Spreadsheet.dll", but it didn't exist. 
      Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\Bytescout.Spreadsheet.exe", but it didn't exist. 
      For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.5.1,AssemblyFoldersEx}". 
      Considered AssemblyFoldersEx locations. 
      For SearchPath "{AssemblyFolders}". 

Qualcuno può consigliare come dovrei ottenere Visual Studio Team Services per l'utilizzo NuGet? In che modo i servizi di Visual Studio Team sono addirittura disposti a utilizzare NuGet se il Ripristino automatico dei pacchetti suggerisce di eliminare ~/.nuget/NuGet.exe?

Grazie in anticipo, Chris

+0

Hai mai questo numero su? Ho avuto circa 12 ore in prova ed errore su questo senza fortuna. Il link nella risposta dice che i flussi di lavoro predefiniti per VSO dovrebbero già gestirlo, ma li ho aperti e ho confermato che il ripristino del pacchetto nuget non è implementato. –

+0

Ciao The Muffin Man, Non ho. La risposta di @ probackpacker ha aiutato a ottenere nuget per avviare il processo ed eseguire il processo di ripristino del pacchetto, TUTTAVIA, quando continua a costruire la soluzione/i progetti, i progetti rilevanti non riescono ancora a localizzare gli assembly. Vedere il mio file di registro (26 giugno alle 9:09) per quanto lontano ho. –

+0

Questo è ** non ** ok. Sono seduto con una configurazione molto più semplice dei tuoi 30+ progetti e riesco ancora a riprodurre questo stupido comportamento scorretto! Ho un'applicazione console con un file (1!), * Program.cs *. Tutto funziona alla grande fino a quando non aggiungo nulla da NuGet: ho provato EF e nUnit. Allora - puf! Niente passa più. Non penso sia impossibile risolverlo, solo una configurazione molto stupida da parte di MS. Qualche suggerimento? –

risposta

1

Non ho usato Visual Studio Team Services, ma il NuGet docs affermazione che pacchetto di ripristino deve essere parte del processo di generazione di default

Per il Team Foundation Build 2013 on-premise e Visual Studio Online (in precedenza Team Foundation Service), il modello predefinito Build Process implementa già il flusso di lavoro NuGet Package Restore senza alcuna configurazione speciale. Le informazioni seguenti si applicano solo a Team Foundation Build 2012 e versioni precedenti o a Build Process Templates che sono stati personalizzati e hanno rimosso la funzionalità NuGet Restore .

Se per qualche motivo il processo di compilazione non include questo passaggio (come sembra essere il caso) potrebbe essere necessario aggiungerlo manualmente. Questo blog post spiega come utilizzare il ripristino del pacchetto con Team Services. Utilizza un file di build dedicato e il processo descritto nel link precedente.

+0

Ciao probackpacker. Sono appena tornato dalle vacanze stasera. L'aspetto iniziale della tua risposta sembra promettente, ma ho intenzione di trovare un po 'di tempo per leggere i link che hai fornito e chiarirmi la testa. Ti riporterò una volta che l'avrò fatto. Saluti. –

+0

Ho letto l'utile post sul blog che mi hai fornito e ho aggiunto NuGet.exe in una cartella degli strumenti e ho creato un progetto msbuild che ripristina NuGet prima di creare la soluzione. Ora riesco a vedere i pacchetti che vengono ripristinati, tuttavia per qualche motivo insano, la compilazione principale non è ancora in grado di risolvere gli assembly! Sfortunatamente, anche su un log di compilazione DETTAGLIATO, il percorso verso cui sono costruiti i pacchetti non è segnalato esplicitamente. Ho provato a cambiare "outdir" del mio msbuild.proj, ma ancora non si verificava la risoluzione. Qualche idea? Grazie. –

+0

Ecco il mio log di costruzione: https://dl.dropboxusercontent.com/u/26079253/build%28C874%29.log –

4

Se si sta sviluppando su Visual Studio Team Services, ho trovato sia Nuget.exe che Nuget.gli obiettivi devono essere presenti, il che sembra essere contrario a tutti i consigli che puoi trovare su Google.

Aggiungendoli, le mie build di Visual Studio Team Services sono funzionanti.

+0

Sono sicuro di aver provato anche quell'opzione, ma tornerò indietro e fare un tentativo e riferire. Al minimo, potrebbe produrre qualcosa di diverso nel file di registro che posso quindi inviare qui. –

+0

Avete un file build.proj per la soluzione? – IntoNET

+0

Darei un'occhiata e fornirmi se lo faccio. –

2

Dopo aver provato molte cose, ho scoperto che stavo usando il modello di default sbagliato.

usavo:

DefaultTemplate.11.1.xaml 

il modello corretto per me era:

TfvcTemplate.12.xaml 

Quando ho usato questo modello la build restaurato da NuGet e completato correttamente

+0

Non ho quel modello nel mio portale per VS Online ... Come l'hai preso? –

Problemi correlati