NUnit nie uruchamia kodu programu Visual Studio 2010

98

Próbuję załadować dll programu Visual Studio 2010 beta do interfejsu GUI NUnit. Wyświetla się komunikat o błędzie.

Ten zestaw jest tworzony przez środowisko uruchomieniowe nowsze niż aktualnie załadowane środowisko uruchomieniowe i nie można go załadować. Być może próbujesz załadować kompilację zestawu przy użyciu nowszej wersji środowiska CLR niż wersja, w której obecnie działa NUnit.

Jak wymusić uruchamianie pliku wykonywalnego pod .NET 4?

Piłka
źródło
Czy to pytanie faktycznie odnosi się do kodu VS 2010 lub .NET 4? - Szukam narzędzia, które pozwoli mi na uruchomienie testów NUNIT na Visual Studio 2010 i to pytanie było mylące.
Nicolas Irisarri
@Nicolas - odnosi się do .NET 4.0.
Daniel A. White

Odpowiedzi:

132

Pobrałem źródło NUnit 2.5 i otworzyłem rozwiązanie VS2008 w wersji beta VS2010. Po zakończeniu konwersji otworzyłem wszystkie projekty i zmieniłem docelowe ustawienie frameworka dla wszystkich projektów na „.NET Framework 4.0”. Następnie zbudowałem rozwiązanie bez żadnych błędów. Mogę teraz używać aplikacji NUnit GUI do uruchamiania testów stworzonych dla .NET 4.0. Nie przeprowadziłem wyczerpujących testów tej kompilacji, więc mogą wystąpić problemy, ale dla moich celów działa dobrze.

Aktualizacja: nie jest konieczne odbudowywanie NUnit. Odkryłem, że jeśli dodasz następujące polecenie do odpowiedniego pliku konfiguracyjnego NUnit, możesz uruchomić testową bibliotekę dll zbudowaną dla .NET 4.0.

W sekcji <konfiguracja> dodaj:

<startup>
  <supportedRuntime version="v4.0.30319" />
</startup>

i pod <runtime> dodaj:

<loadFromRemoteSources enabled="true" />
Charles Cook
źródło
3
Ok, aktualizacje konfiguracji sprawiają, że to działa, ale musiałem użyć version = "v4.0.21006" dla mojego tagu requiredRuntime.
mkmurray
4
BTW, domyślna lokalizacja pliku konfiguracyjnego to: C: \ Program Files \ NUnit 2.5.3 \ bin \ net-2.0 \ nunit.exe.config Dodanie tych opcji do konfiguracji zadziałało.
Brad Irby,
2
Nie udało się zmusić tego do pracy z najnowszym Nunit + .net4 RTM. Dodałem sugerowane wpisy do nunit-console.exe.config, ale otrzymałem: System.ArgumentException: Framework net-4.0 nie jest dostępny Wypróbowałem z powyższymi wersjami + v4.0.30319 Używam 2008 R2 x64
Andreas Öhlund
1
W przypadku konsoli uruchamiającej, zmień konfiguracje, jak wspomniano, ale używając wersji 4.0.30319 dla wersji RTM .NET 4.0. Uruchom go również z tym argumentem wiersza poleceń: /framework=4.0.30319
Lance Fisher
1
Miałem szczęście, używając opcji wiersza poleceń /framework:net-4.0.30319 zamiast zmieniać konfigurację. Było to pomocne, więc mogłem kontrolować, które aplikacje używają 4.0 CLR, a które nie.
Kevin Crowell
25

Po wydaniu .NET 4 użyłem

<supportedRuntime version="v4.0.30319" />

w NUnit 2.5.4 exe.config zamiast requiredRuntime oraz tag loadFromRemoteResources, jak pokazano powyżej, i wszystko działało dobrze. Dzięki!

pelazem
źródło
17

Nie musisz modyfikować żadnego pliku

po prostu otwórz ten plik i wszystko będzie działać dobrze

C: \ Program Files (x86) \ NUnit 2.5.10 \ bin \ net-2.0 \ nunit-x86.exe

murzyn
źródło
Dziękuję - rozwiązałem moją sprawę. Musisz używać nunit w wersji x86 do testów jednostkowych skompilowanych x86. Ostrzeżenia dotyczące wersji CLR były czerwonym śledziem. Korzystanie z nunit 2.5.10.
Nigel Touch
To samo tutaj, jakoś musi użyć wersji x86
gavin
12

W NUnit 2.5.5 można określić w wierszu poleceń opcję /framework=net-4.0 i jest ona zgodna z nowymi zestawami wygenerowanymi wraz z wydaniem najnowszego VS2010.

Cristian T
źródło
3
Nigdy nie byłem w stanie zmusić tego do pracy. Widziałem, jak ludzie używają /framework:net-4.0.30319 i wielu innych odmian. Byłoby miło, gdyby uwzględnili rzeczywiste opcje w dokumentacji witryny.
Jason Short
2
@Jason Wygląda na to, że działa to tylko w wersji na konsole. Wersja GUI nie ma tej opcji.
Roman Starkov
+1 za wzmiankę, że to działa począwszy od wersji 2.5.5! Miałem NUnit rzucający ArgumentExceptions i NullReferenceExceptions na jednej z moich maszyn i okazało się, że to z powodu wersji 2.5.0.
realMarkusSchmidt
2

Proponowane rozwiązanie świetnie sprawdziło się przy uruchamianiu NUnit. Niestety, kiedy dotarłem do etapu pokrycia kodu, NCover zaczął dawać mi:

Profilowany proces zakończony. Nie nawiązano połączenia profilera.

Najlepszym rozwiązaniem, jakie znalazłem, było użycie wersji NUnit „-x86” z programem NCover:

NCover.Console.exe nunit-console-x86.exe - dodatkowe parametry--

Działa teraz.

Scott Marlowe
źródło
1
Dziękuję za to, miałem ten sam problem, twoja poprawka go rozwiązała!
CubanX
2

Aby znaleźć swoją wersję .net 4 w programie Visual [C # 2010 Express lub jakimkolwiek innym], przejdź do opcji „Informacje” aplikacji Visual w pozycji Pomoc w menu. Powinien pojawić się jako wersja w wierszu Microsoft .NET Framework w prawym górnym rogu okna.

Dan Paden
źródło
1

Napotkałem ten sam komunikat o błędzie podczas uruchamiania NUnit 2.4.8. Ponieważ od jakiegoś czasu nie dokonywałem aktualizacji, zainstalowałem obecny NUnit (v2.5.9) i stwierdziłem, że obsługuje on teraz zespoły VS2010. Więc jeśli na nowo napotkałeś ten błąd, sprawdź swoją wersję NUnit : od grudnia 2010 (lub więcej) jedyną rzeczą, którą musisz zrobić, jest aktualizacja NUnit.

Michael Sorens
źródło
Używam NUnit 2.5.9 pobranego 15/03/2011 i ten problem po prostu nie zniknie. Nawet jeśli spróbuję proponowanego rozwiązania
DrLazer
1

Od wersji NUnit 2.5.10 można włączyć obsługę studia wizualnego w programie uruchamiającym GUI:

Narzędzia-> Ustawienia-> Wsparcie IDE

Po tym udało mi się pomyślnie podłączyć do procesu nunit-agent.exe, który uruchamia zestaw w domenie aplikacji .NET 4.0

Coś świetnego
źródło
0

Jeśli napotkasz ten problem po aktualizacji do nunit 2.5.5, będziesz musiał zaktualizować nant do najnowszej wersji, dla mnie była to .91 alpha.

Adam
źródło
0

Uważam, że warto zacząć od szablonu aplikacji NUnit . Obsługuje VS C # Express, umożliwia debugowanie testów i zawiera prekompilowany NUnit dla .NET 4.0. Dzięki autorowi, nowy projekt testowy jest gotowy jednym kliknięciem.

Ernest
źródło