In NUnit wird kein Visual Studio 2010-Code ausgeführt

98

Ich versuche, eine Visual Studio 2010-Beta-DLL in die NUnit-GUI zu laden. Ich erhalte einen Popup-Fehler.

Diese Assembly wird von einer Laufzeit erstellt, die neuer als die aktuell geladene Laufzeit ist, und kann nicht geladen werden. Möglicherweise versuchen Sie, einen Assemblybuild mit einer späteren Version der CLR als der Version zu laden, unter der NUnit derzeit ausgeführt wird.

Wie erzwinge ich die Ausführung einer ausführbaren Datei unter .NET 4?

Ball
quelle
Bezieht sich diese Frage tatsächlich auf VS 2010- oder .NET 4-Code? - Ich suche nach einem Tool, mit dem ich NUNIT-Tests in Visual Studio 2010 ausführen kann, und diese Frage war irreführend.
Nicolas Irisarri
@Nicolas - bezieht sich auf .NET 4.0.
Daniel A. White

Antworten:

132

Ich habe die NUnit 2.5-Quelle heruntergeladen und die VS2008-Lösung in der VS2010-Beta geöffnet. Nach Abschluss der Konvertierung habe ich alle Projekte geöffnet und die Zielframeworkeinstellung für alle Projekte in ".NET Framework 4.0" geändert. Ich habe dann die Lösung ohne Fehler erstellt. Ich kann jetzt die NUnit-GUI-App verwenden, um Tests auszuführen, die für .NET 4.0 erstellt wurden. Ich habe diesen Build nicht ausführlich getestet, daher kann es zu Problemen kommen, aber für meine Zwecke funktioniert er einwandfrei.

Update: Es ist nicht erforderlich, NUnit neu zu erstellen. Ich habe festgestellt, dass Sie eine für .NET 4.0 erstellte Test-DLL ausführen können, wenn Sie der entsprechenden NUnit-Konfigurationsdatei Folgendes hinzufügen.

Fügen Sie unter <Konfiguration> Folgendes hinzu:

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

und unter <runtime> hinzufügen:

<loadFromRemoteSources enabled="true" />
Charles Cook
quelle
3
Ok, die Konfigurationsaktualisierungen machen es möglich, aber ich musste version = "v4.0.21006" für mein erforderliches Laufzeit-Tag verwenden.
mkmurray
4
Übrigens lautet der Standardspeicherort der Konfigurationsdatei: C: \ Programme \ NUnit 2.5.3 \ bin \ net-2.0 \ nunit.exe.config Das Hinzufügen dieser Optionen zur Konfiguration hat bei mir funktioniert.
Brad Irby
2
Mit dem neuesten Nunit + .net4 RTM konnte dies nicht funktionieren. Ich habe die vorgeschlagenen Einträge zu nunit-console.exe.config hinzugefügt, erhalte jedoch Folgendes: System.ArgumentException: Das Net-4.0-Framework ist nicht verfügbar. Versucht mit den oben genannten Versionen + v4.0.30319 Ich verwende 2008 R2 x64
Andreas Öhlund
1
Ändern Sie für den Konsolenläufer die Konfigurationen wie erwähnt, verwenden Sie jedoch v4.0.30319 für die RTM-Version von .NET 4.0. Führen Sie es auch mit diesem Befehlszeilenargument aus: /framework=4.0.30319
Lance Fisher
1
Ich hatte Glück, die Befehlszeilenoption /framework:net-4.0.30319 zu verwenden, anstatt die Konfiguration zu ändern. Dies war hilfreich, damit ich steuern konnte, welche Anwendungen die 4.0 CLR verwendeten und welche nicht.
Kevin Crowell
25

Mit der Veröffentlichung von .NET 4 habe ich verwendet

<supportedRuntime version="v4.0.30319" />

in der NUnit 2.5.4 exe.config anstelle von requiredRuntime und dem loadFromRemoteResources-Tag wie oben gezeigt und alles funktionierte gut. Vielen Dank!

pelazem
quelle
17

Sie müssen keine Datei ändern

Öffnen Sie einfach diese Datei und alles wird gut funktionieren

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

dunkel
quelle
Danke - habe meinen Fall gelöst. Müssen Sie x86-Version von nunit für Unit-Tests verwenden, die x86 kompiliert haben. Warnungen der CLR-Version waren ein roter Hering. Verwenden von nunit 2.5.10.
Nigel Touch
Das gleiche hier, irgendwie muss x86-Version verwenden
Gavin
12

In NUnit 2.5.5 können Sie in der Befehlszeile die Option /framework=net-4.0 angeben, die mit den neuen Assemblys kompatibel ist, die mit der Version des neuesten VS2010 generiert wurden.

Cristian T.
quelle
3
Ich habe es nie geschafft, das zum Laufen zu bringen. Ich habe gesehen, wie Leute /framework:net-4.0.30319 und alle möglichen anderen Variationen verwendeten. Wäre schön, wenn sie die tatsächlichen Optionen in den Site-Dokumenten enthalten würden.
Jason Short
2
@ Jason Es scheint, dass dies nur auf der Konsolenversion funktioniert. Die GUI-Version hat diese Option nicht.
Roman Starkov
+1 für die Erwähnung, dass dies ab Version 2.5.5 funktioniert! Ich hatte NUnit, das ArgumentExceptions und NullReferenceExceptions auf einem meiner Computer auslöste, und es stellte sich heraus, dass es an Version 2.5.0 lag.
RealMarkusSchmidt
2

Die vorgeschlagene Lösung hat sich hervorragend bewährt, um NUnit zum Laufen zu bringen. Als ich dann zu meinem Codeabdeckungsschritt kam, gab NCover mir leider Folgendes:

Profilierter Prozess beendet. Profiler-Verbindung nicht hergestellt.

Die beste Lösung, die ich dafür gefunden habe, war, einfach die "-x86" -Version von NUnit mit NCover zu verwenden:

NCover.Console.exe nunit-console-x86.exe - zusätzliche Parameter--

Funktioniert jetzt.

Scott Marlowe
quelle
1
Vielen Dank dafür, ich hatte das gleiche Problem, Ihr Fix hat es gelöst!
CubanX
2

Um Ihre .net 4-Version über Visual [C # 2010 Express oder welche auch immer] zu finden, gehen Sie zu "Info" der Visual-Anwendung unter dem Menüelement "Hilfe". Es sollte als Version unter der Microsoft .NET Framework-Zeile oben rechts im Fenster angezeigt werden.

Dan Paden
quelle
1

Beim Ausführen von NUnit 2.4.8 ist dieselbe Fehlermeldung aufgetreten. Da ich seit einiger Zeit kein Upgrade durchgeführt hatte, installierte ich die aktuelle NUnit (v2.5.9) und stellte fest, dass sie jetzt VS2010-Assemblys unterstützt. Wenn Sie diesen Fehler neu festgestellt haben, überprüfen Sie Ihre NUnit-Version : Ab Dezember 2010 (oder so) müssen Sie nur noch NUnit aktualisieren.

Michael Sorens
quelle
Ich verwende NUnit 2.5.9, das am 15.03.2011 heruntergeladen wurde, und dieses Problem wird für mich nicht verschwinden. Auch wenn ich die vorgeschlagene Lösung versuche
DrLazer
1

Ab NUnit 2.5.10 können Sie die Visual Studio-Unterstützung im GUI-Runner aktivieren:

Extras-> Einstellungen-> IDE-Unterstützung

Danach konnte ich erfolgreich eine Verbindung zum Prozess nunit-agent.exe herstellen, der Ihre Assembly in einer .NET 4.0-App-Domäne ausführt

Crackerjack
quelle
0

Wenn dieses Problem nach dem Upgrade auf nunit 2.5.5 auftritt, müssen Sie nant auf die neueste Version aktualisieren, für mich war es .91 alpha.

Adam
quelle
0

Ich fand sehr nützlich aus NUnit Anwendung starten Vorlage . Es unterstützt VS C # Express, ermöglicht Debugging-Tests und enthält vorkompilierte NUnit für .NET 4.0. Dank des Autors wird das neue Testprojekt mit einem Klick fertig.

Ernest
quelle