2014-11-27 14 views
5

Mam serwer TeamCity skonfigurowany do budowania wielu rozwiązań, a następnie uruchamiam testy jednostek w nich za pomocą NUnit Test Runner.Mam testy jednostkowe, które przechodzą w NUnit GUI i Resharper, ale kończą się niepowodzeniem, gdy Team City je obsługuje.

To działa doskonale przez kilka miesięcy; Jednak z naszej najnowszej kompilacji Jestem napotyka się następujący błąd:

SetUp method failed. SetUp : System.IO.FileLoadException : Could not load file or assembly 'log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

zdarza się tylko dla jednego TestFixture który zawiera 9 testy spośród setek w całym systemie. Wszystkie testy przebiegają przy użyciu ReSharper lub GUI NUnit.

Pakiet Nuget ma prawidłowe odniesienie zarówno w testowanym projekcie, jak i samym projekcie testowym. Brak konieczności przekierowania wiązań zespołu wykonawczego, ponieważ tylko jedna wersja Log4Net została kiedykolwiek zainstalowana.

Czy ktoś inny miał podobny problem, który rozwiązał, lub jakiekolwiek pomysły na temat tego, czym może być problem? Dlaczego miałby działać lokalnie, a nie na serwerze, szczególnie biorąc pod uwagę te same testy, które przeszły wcześniej.

Wersje NUnit na moim lokalnym komputerze i serwerze TeamCity są takie same.

+0

Komunikat o błędzie wskazuje, że masz złą wersję log4net, czy sprawdziłeś, czy ta część jest poprawna? –

+0

Tak, oczywiście. Jak już wspomniałem, tylko jedna wersja pakietu Log4Net Nuget została zainstalowana, a po zbadaniu przy użyciu każdej formy odsyłaczy mogę pomyśleć, że jest to ta sama wersja. Buduje i testy przechodzą na miejscu, więc jestem prawie pewien, że nie jest to takie proste. – tker

Odpowiedz

4

Po prostu odpowiem na moje własne pytanie na wypadek, gdyby ktoś inny to napotkał.

Wygląda na to, że manifest zespołu Log4Net został spakowany niepoprawnie lub przynajmniej inaczej, niż można się było spodziewać.

Wynika to z wersji DLL w wersji 1.2.13, ale wersja pakietu NuGet to wersja 2.0.3.

Co zrobiliśmy było dodać zespół wiążącej jak poniżej, które Naprawiono problem:

<dependentAssembly> 
    <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.2.13.0" newVersion="2.0.3" /> 
</dependentAssembly> 

mam absolutnie żadnego pojęcia, dlaczego to się nie udało tylko dla jednego projektu poza ~ 60 w trakcie budowy lub dlaczego to działało w moim środowisku deweloperskim VS/ReSharper Nunit test runner, ale nie udało się TeamCity!

+0

Gdzie dokładnie dodano to powiązanie? Mam ten sam problem i mam wiązanie w moim assembly.dll.config, ale jak dotąd TeamCity po prostu ignoruje te ustawienia. –

+0

Przepraszamy za powolną odpowiedź; po prostu dodajesz go do app.config pod tker

Powiązane problemy