2016-07-09 50 views
6

Sto riscontrando un problema nel pacchetto del pacchetto nuget, che include AutoMapper 5.0.2. Ciò sta producendo solo un errore all'interno dei server di compilazione di Visual Studio Team Services (VSTeam).Quando si esegue il comando del pacchetto NuGet, viene visualizzato l'errore: "AutoMapper" ha già una dipendenza definita per "NETStandard.Library"

Il mio progetto sta usando .NET 4.6.1

Tutte le idee su come risolvere?

Ecco l'errore:

2016-07-08T23:46:44.5801667Z C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.102.0\agent\worker\tools\NuGet.exe pack "C:\a\1\s\Project.csproj" -OutputDirectory "C:\a\1\s\Project\bin\release" -Properties Configuration=release -IncludeReferencedProjects 
2016-07-08T23:46:45.0458195Z MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'. 
2016-07-08T23:46:45.0468395Z Attempting to build package from 'Project.csproj'. 
2016-07-08T23:46:45.1942694Z Packing files from 'C:\a\1\s\Project\bin\Release'. 
2016-07-08T23:46:45.3942642Z ##[error]**'AutoMapper' already has a dependency defined for 'NETStandard.Library'.** 
2016-07-08T23:46:45.4142626Z ##[error]System.Exception: Unexpected exit code 1 returned from tool NuGet.exe 
2016-07-08T23:46:45.4152639Z ##[error] at Microsoft.TeamFoundation.DistributedTask.Task.Internal.PowerShell.InvokeToolCmdlet.ProcessRecord() 
2016-07-08T23:46:45.4152639Z ##[error] at System.Management.Automation.CommandProcessor.ProcessRecord() 

ho anche aperto un problema su GitHub: https://github.com/AutoMapper/AutoMapper/issues/1499

+1

È necessario aggiornare la versione di NuGet che si sta utilizzando come descritto qui: http://stackoverflow.com/questions/38247961/nuget-package-manager-automapper-already-has-a-dependency-defined-for- micros –

+0

Ho capito che era il caso. Solo che non so come farlo su un server di build Hosted per Visual Studio Online. – Phobis

+0

Sembra che Hosted Build Server stia eseguendo NuGet 3.3.0.212 – Phobis

risposta

4

sono stato in grado di risolvere/soluzione il problema mettendo uno script PowerShell in per scaricare l'ultima NuGet. Quindi ho indicato tutte le attività NuGet su questo nuovo nuget.exe. Pro: le build funzionano di nuovo, Contro: ogni build scarica nuovamente NuGet, causando un carico non necessario su NuGet.org.

Ecco il mio PowerShell:

$sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" 
$targetNugetExe = "$(build.sourcesdirectory)/nuget.exe" 
Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe 
Set-Alias nuget $targetNugetExe -Scope Global -Verbose 
nuget 
+0

Lo script non sembra funzionare per me (I've got Il termine 'Build.SourcesDirectory' non è riconosciuto come il nome di un cmdlet, una funzione, un file di script o un programma eseguibile.), Ma ciò che funzionava era semplicemente il download https://dist.nuget.org/win-x86-commandline/latest/nuget.exe, sostituendo il file nel mio progetto, e poi semplicemente ovunque in VSO impostando il percorso NuGet su "$ (Build.SourcesDirectory) \. nuget \ nuget.exe " –

+0

Invece di scaricare' nuget.exe' su ogni build, l'ho incluso nel controllo del codice sorgente e il passaggio di build puntato per usarlo. Ma lo stesso problema - la versione di nuget sta rompendo le cose. – trailmax

+0

@VictorF: Per lo script standalone di Powershell può essere usato '$ PSScriptRoot' (ad esempio' $ targetNugetExe = "$ PSScriptRoot/nuget.exe" ') –

8

È necessario installare la nuova versione Nuget per la versione di Visual Studio.

garantita da qui Nuget gallery

+2

Ovviamente qualcosa di sciocco come questo sarebbe la soluzione. lol Grazie, per me ha funzionato. – Nicholas

0

Se qualcuno utilizza squadra della città è inoltre necessario utilizzare/installare la versione più recente di Nuget.