2010-07-23 18 views
5

Kiedy uruchomić kompilacji Release moich (VS 2008 .NET) testów jednostkowych, pojawia się następujący wyjątek:Problemy z systemem badanej jednostki w Visual Studio

System.IO.FileLoadException: Nie można załadować pliku lub "arcVegaORM, wersja = 1.0.3856.24327, Culture = neutral, PublicKeyToken = 0dd85ae1d99ddbee 'lub jedna z jego zależności. Definicja manifestu zlokalizowanego złożenia nie pasuje do odwołania do zespołu. (Wyjątek od HRESULT: 0x80131040).

Nie otrzymuję wyjątku, gdy uruchamiam testy kompilacji debugowania.

Platforma testów jednostkowych kopiuje starszą wersję zestawu arcVegaORM do folderu TestResults \ Out. Nie wiem skąd pochodzi stara wersja - nie pasuje do wersji w folderze projects bin \ Release.

Zaczynam myśleć, że jest błąd w strukturze testowej jednostki VS.NET i że ma ona starą wersję w pamięci podręcznej.

Odpowiedz

2

Jedna rzecz do sprawdzenia to GAC (pamięć podręczna montażu globalnego). Możesz to zrobić, otwierając Eksploratora Windows i wpisując c: \ windows \ assembly na pasku adresu (zakładając, że twój system operacyjny jest zainstalowany na dysku c).

Może to być pobieranie zespołu z GAC.

Do innych rzeczy należy wyczyszczenie rozwiązania i wykonanie przebudowy, aby upewnić się, że nie ma żadnych starych odniesień do zespołu.

Ponadto, jeśli jest to aplikacja internetowa, zawsze pomaga zatrzymać usługi IIS, a następnie wyczyścić folder C:\WINDOWS\Microsoft.NET\Framework\framework_version\Temporary ASP.NET Files.

TIP
Inną rzeczą jest, aby używać .Net reflector. Możesz zobaczyć, jakie zależności ma zespół, i musisz upewnić się, że wszystkie są obecne na komputerze docelowym.

Sposób wykonania tej czynności polega na zainstalowaniu reflektora, uruchomieniu go, a następnie przeciągnięciu do niego zespołu i wyświetleniu zależności złożenia. Musisz upewnić się, że każda z tych bibliotek zależności jest dostępna na komputerze docelowym, a także numer wersji musi być poprawny, jeśli są one podpisane złożeń.

Tip2
Należy pamiętać, że czasami masz problemy gdzie montaż A jest związane przeciwko wersji XXX montażowej B, C i montaż jest związany przeciwko wersji yyy zgromadzeń B. Innymi słowy, 2 różne zespoły w projekcie są związany z różnymi wersjami tego samego zestawu. To jest współczesna wersja DLL Hell. Sposobem na zhackowanie się jest użycie ponownego wiązania zespołu. Możesz przeczytać o tym here.

+0

Zestaw nie znajduje się w GAC - już sprawdziłem. Problem można odtworzyć na innych komputerach. – GarethOwen

+0

Zobacz moją najnowszą wskazówkę, używam tej techniki do rozwiązania tego typu problemów. Dodaję też tip2 w sekundę, więc bądźcie czujni :). – dcp

+0

+1 za szczegółową odpowiedź, ale nie sądzę, że to jest problem. Zestaw, którego nie można znaleźć - arcVegaORM - to projekt w moim rozwiązaniu. Spróbowałem wykonać pełną przebudowę - ale wersja skopiowana do katalogu testowego nie jest tą samą wersją, co w katalogu bin arcVegaORM. Jedyny problem podczas uruchamiania testów wersji - testowanie wersji debugowania działa dobrze! – GarethOwen

Powiązane problemy