"Datei oder Assembly konnte nicht geladen werden" beim Erstellen mit Teamstadt

8

Ich stoße auf ein Problem mit Komponententests auf unserem Build-Server Team City (8.0.4) - der Code builds & amp; führt alle Tests lokal über Resharper und nCrunch aus.

Aber wenn ich auf dem Server laufe, erhalte ich den folgenden Fehler, obwohl die Unity-Assembly im selben Verzeichnis wie die Unit Test Assembly existiert und in der Unit Test Assembly referenziert wird.

  

Setup-Methode fehlgeschlagen. SetUp: System.IO.FileNotFoundException: Die Datei oder Assembly 'Microsoft.Practices.Unity, Version = 2.0.414.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die angegebene Datei wurde vom System nicht gefunden.      bei XXXX.Unity.UnityContainerAdapter..ctor ()      bei XXXX.GraphExtensionsTests..ctor () in c: \ TeamCityV7 \ Agent-1 \ Arbeit \ f02f7e27c0bedfa2 \ XXXX \ Graph.Tests \ Extensions \ GraphExtensionsTests.cs: Zeile 44

Ich habe die Kopie von Microsoft.Practices bestätigt.Unity ist die korrekte Version.

Ich habe auch bestätigt, dass die Assemblies mit der Vollversion des Frameworks erstellt wurden - ohne Client-Profil.

Irgendwelche Ideen, warum Team City scheitern könnte?

    
AwkwardCoder 16.01.2014, 14:33
quelle

2 Antworten

13

Überprüfen Sie das Muster, das Sie verwenden, um Ihre Testbaugruppen zu lokalisieren. Ich hatte ein ähnliches Problem mit einer anderen Bibliothek und es stellte sich heraus, dass das Muster darin bestand, die Test-Assembly unter bin \ Release und obj \ Release zu finden; Der Ordner obj enthält nicht alle Assemblys, auf die das Projekt verweist, und ist eigentlich nur ein Arbeitsordner für den Compiler.

    
Andy 16.01.2014, 18:12
quelle
1

Eine andere Möglichkeit, die ich kürzlich entdeckt habe, ist, wenn Sie eine Bibliothek verwenden, die Sie nicht explizit referenzieren, wird TeamCity die Bibliothek nicht zur Verwendung sammeln und scheitern, wenn es implizit auf die Assembly verweist. Ich entdeckte dies, als ich versuchte herauszufinden, warum NHibernate.ByteCode.Castle, auf das in meinem Testprojekt verwiesen wurde, nicht geladen wurde und zu einer FileNotFoundException bei TeamCity führte. Letztendlich habe ich einen Unit-Test gemacht:

%Vor%

... danach wird die Datei korrekt geladen und meine Unit-Tests kompiliert.

    
Jeremy Holovacs 06.10.2014 18:43
quelle