Frage

Auf einer Klassenbibliothek Projekt, stellte ich die „Startaktion“ auf der Registerkarte Debuggen der Projekteigenschaften auf „externes Programm starten“ ( NUnit in diesem Fall). Ich möchte dieses Programm eine Umgebungsvariable in der Umgebung gesetzt beginnt. Wie kann ich das tun? (Ist es überhaupt möglich?)

EDIT:

Es ist eine Umgebungsvariable, die alle .NET-Anwendungen beeinflussen (COMplus_Version, setzt sich die Runtime-Version), so dass es Systemeinstellung breit ist wirklich keine Option.

Als Abhilfe, die ich NUnit nur gezwungen, in der rechten .NET-Version zu starten (2.0), indem sie es in nunit.exe.config Einstellung, leider auch bedeutet dies, alle meine .NET 1.1 Unit-Tests werden nun auch .NET 2.0 zulaufen. Ich sollte wahrscheinlich nur eine Kopie der ausführbaren Datei machen, damit es seine eigene Konfigurationsdatei haben kann ...

(Ich halte die Frage offen (nicht eine Antwort zu akzeptieren), falls jemand zu finden, geschieht, wie (es auch für andere Zwecke nützlich sein könnte, nachdem alle ...))

War es hilfreich?

Lösung

In Visual Studio 2008 und Visual Studio 2005 zumindest, können Sie Änderungen an Umgebungsvariablen in den Projekteinstellungen angeben.

Öffnen Sie Ihr Projekt. Zum Projekt -> Eigenschaften ... unter Konfigurationseigenschaften -.> Debuggen, bearbeiten Sie die ‚Umwelt‘ Wert Umgebungsvariablen setzen

Zum Beispiel, wenn Sie das Verzeichnis hinzufügen möchten "c: \ foo \ bin" auf dem Pfad, wenn die Anwendung debuggen, stellen Sie den Wert 'Umwelt' auf "PATH =% PATH%; c: \ foo \ bin" .

 Hier ist ein Screenshot des Einstellungsdialogs

Andere Tipps

Visual Studio 2003 scheint nicht zuzulassen, dass Sie Umgebungsvariablen für das Debuggen setzen.

Was ich in C / C ++ zu tun ist die Verwendung _putenv() in main() und alle Variablen gesetzt. Normalerweise Ich umgebe sie mit einem #if defined DEBUG_MODE / #endif um sicherzustellen, dass nur bestimmte Builds es haben.

_putenv("MYANSWER=42");

Ich glaube, Sie können die gleiche Sache mit C # zu tun mit os.putenv (), d.

os.putenv('MYANSWER', '42');

Diese werden die envrironment Variable für den Shell-Prozess nur gesetzt, und als solche ist eine ephemere Einstellung, das ist, was Sie suchen.

Durch die Art und Weise, seine gute Process Explorer zu verwenden ( http: // technet.microsoft.com/en-us/sysinternals/bb896653.aspx ), das ist ein Werkzeug sysinternals. Sie können einen bestimmten Prozess Kopie der Umgebungsvariablen sehen, was ist, so können Sie das bestätigen, was Sie gesetzt ist, was du hast.

In Visual Studio für Mac und C # können Sie:

Environment.SetEnvironmentVariable("<Variable_name>", "<Value>");

Aber Sie werden die folgenden Namespace benötigen

using System.Collections;

Sie können die vollständige Liste der Variablen, die mit dieser Prüfung:

foreach (DictionaryEntry de in Environment.GetEnvironmentVariables())
            Console.WriteLine("  {0} = {1}", de.Key, de.Value);

Beginnend mit NUnit 2.5 Sie können / Rahmen Schalter z.

nunit-console myassembly.dll /framework:net-1.1

Dies ist von NUnit Hilfe Seiten .

Wenn Sie nicht bat-Dateien verwenden können Sie Ihre Umgebung einrichten, dann wahrscheinlich nur Option ist eine systemweite Umgebungsvariable einzurichten. Sie können diese, indem Sie

finden
  1. Rechtsklick auf "Arbeitsplatz"
  2. Wählen Sie Eigenschaften
  3. Wählen Sie die Registerkarte "Erweitert"
  4. Klicken Sie auf "Umgebungsvariablen" Taste
  5. In der „Systemvariablen“ Abschnitt, fügen Sie die neue Umgebungsvariable, die Sie wünschen
  6. „Ok“ den ganzen Weg aus, um die Änderungen
  7. akzeptieren

Ich weiß nicht, ob Sie Visual Studio neu starten müsste, scheint aber unwahrscheinlich. HTH

Stellen Sie eine Batch-Datei auf, die Sie aufrufen können. Übergeben Sie den Pfad der Batch-Datei, und haben die Batch-Datei die Umgebungsvariable gesetzt und dann rufen Sie NUnit.

Als Umgebungen aus dem übergeordneten Prozess geerbt werden, könnten Sie ein Add-in für Visual Studio schreiben, die seine Umgebungsvariablen ändern, bevor Sie den Start ausführen. Ich bin nicht sicher, wie einfach das wäre in Ihren Prozess zu setzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top