2013-07-11 16 views
6

Ich habe meiner Lösung über Nuget die Autoumapper- und NUnit-Pakete hinzugefügt und sie funktionieren großartig und das Projekt wird in meinem Computer kompiliert.Build schlägt in Teamcity für Nuget-Pakete fehl

Wenn ich den Build-Server erklärt, diese Lösung ich diese Nachrichten bekam zu bauen:

[MSBuild] AutoMapper\AutoMapperSpike.csproj: Build default targets (1s) 
[10:35:50][AutoMapper\AutoMapperSpike.csproj] ResolveAssemblyReferences 
[10:35:50][ResolveAssemblyReferences] ResolveAssemblyReference 
[10:35:50][ResolveAssemblyReference] Primary reference "AutoMapper". 
[10:35:50][ResolveAssemblyReference] C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360, 9): warning MSB3245: Could not resolve this reference. Could not locate the assembly "AutoMapper". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 
[10:35:50][ResolveAssemblyReference]   For SearchPath "{HintPathFromItem}". 
[10:35:50][ResolveAssemblyReference]   Considered "..\packages\AutoMapper.2.2.1\lib\net40\AutoMapper.dll", but it didn't exist. 

Wer weiß, wie dieses Problem zu lösen?

Eine andere Sache, die ich bemerkte, ist, dass es Artificts in Build Server auch mit dem Paketordner erstellt. Das einzige, was es nicht tun kann, ist das Projekt im Build-Server zu erstellen.

+0

Haben Sie die Pakete selbst eingecheckt? – Arran

+0

Die packages.config und alle Projekte mit Projektreferenzen (einschließlich dll, die von nuget hinzugefügt wurden) werden eingecheckt. – FelProNet

+0

besteht die Datei tatsächlich oder nicht? – stijn

Antwort

0

Sie müssen entweder die Pakete in Ihr VCS einchecken oder - besser - enable NuGet package restore in Ihrer Lösung.

+0

Es ist immer noch der gleiche Fehler, nachdem Sie es getan haben. – FelProNet

6

In einer Visual Studio-Umgebung gibt es eine Option in der Benutzeroberfläche, die einen Wert für Ihr Benutzerprofil festlegt, sodass Sie sich nie wieder daran erinnern müssen. Auf einem Build-Server gibt es jedoch keine solche Option. Stattdessen müssen Sie die Umgebungsvariable "EnableNuGetPackageRestore" als Teil Ihres Builds auf "true" setzen.

Ich würde empfehlen zu versuchen, die Umgebungsvariable innerhalb Ihrer Build-Skripte oder .csproj-Dateien zu setzen. Here’s the blog article all about why it happened and what to set on your dev machine/build server.

+0

Hey, ich habe versucht, diese Umgebungsvariable auf dem Build-Server ohne Erfolg zu setzen. Es ist das gleiche Problem wie zuvor. – FelProNet

+0

Erhalten Sie den gleichen Fehler wie zuvor oder eine Änderung des Fehlers? – RinoTom

+0

Gleicher Fehler. Momentan verwende ich die Bibliothek von Drittanbietern in Lösungselementen, bis ich eine Lösung für dieses Problem finden werde. Ich möchte mit Nuget arbeiten, solange es keine Probleme im Build-Server verursacht. – FelProNet

4

Stellen Sie sicher, dass TeamCity das Paket tatsächlich herunterlädt. Sie können dies im Build-Verlauf auf einer einzelnen Build-Ergebnisseite auf der Registerkarte NuGet-Pakete sehen. Wenn Sie dort Ihr Paket sehen, ist TeamCity mit dem Paket einverstanden.

Als nächstes stellen Sie sicher, dass Sie Ihr Projekt frisch aus dem VCS erstellen können, d. H., Nehmen Sie einen sauberen Klon und versuchen Sie, ihn als solchen zu erstellen, da TC dies zu tun hat.

Mein Problem in einem sehr ähnlichen Szenario war, dass ich gerade ein Projekt in ein anderes Repository kopiert hatte und die Verweise falsch waren, obwohl die Kompilierung aufgrund zwischengespeicherter DLLs lokal erfolgreich war. Durch das Deinstallieren des Pakets und erneutes Installieren aus dem Visual Studio Package Manager wurde das Problem behoben.

+0

Clean Clone enthüllte mein Problem. Netter Tipp. –

Verwandte Themen