2008-09-19 19 views
38

Bei einem Klassenbibliotheksprojekt habe ich die "Start Action" auf der Registerkarte Debug der Projekteigenschaften auf "Start externes Programm" gesetzt (NUnit in diesem Fall). Ich möchte eine Umgebungsvariable in der Umgebung setzen, in der dieses Programm gestartet wird. Wie mache ich das? (Ist es überhaupt möglich?)Wie setze ich bestimmte Umgebungsvariablen beim Debuggen in Visual Studio?

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 Workaround habe ich gerade NUnit gezwungen, in der richtigen .NET Version (2.0) zu starten, indem ich es in nunit.exe.config setze, obwohl dies leider auch bedeutet, dass alle meine .NET 1.1 Komponententests jetzt auch in .NET 2.0 laufen. Ich sollte wahrscheinlich nur eine Kopie der ausführbaren Datei machen, damit sie ihre eigene Konfigurationsdatei haben kann ...

(Ich behalte die Frage offen (keine Antwort annehmend) für den Fall, dass jemand zufällig herausfindet, wie (es könnte auch für andere Zwecke nützlich sein ...))

+0

Möchten Sie eine Umgebungsvariable speziell für diesen einen Progr Bin nur? –

Antwort

59

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

Öffnen Sie Ihr Projekt. Gehen Sie zu Projekt -> Eigenschaften ... Bearbeiten Sie unter Konfigurationseigenschaften -> Debugging den Wert 'Umgebung', um Umgebungsvariablen festzulegen.

Wenn Sie beispielsweise beim Debuggen der Anwendung das Verzeichnis "c: \ foo \ bin" zum Pfad hinzufügen möchten, setzen Sie den Wert 'Environment' auf "PATH =% PATH%; c: \ foo \ bin" ".

Here's a screenshot of the settings dialog

+0

Ich verwende VS2008, und meine Projekteigenschaften haben keine "Konfigurationseigenschaften" oder "Debugging" darauf. Unter den Projekteigenschaften kann ich nirgends Umgebungsvariablen finden. Was mache ich falsch? –

+0

Ich werde diesen Beitrag mit einem Screenshot bearbeiten, wo die Einstellungen sind. –

+0

Hallo, wie bist du zu diesem Bildschirm gekommen? In meinem VS2008 und VS2005 scheinen Projekteigenschaften unterschiedlich zu sein, und sie haben keine Umgebungseinstellungen – Grzenio

0

Richten Sie eine Batch-Datei ein, die Sie aufrufen können. Übergeben Sie den Pfad an die Batch-Datei und lassen Sie die Batch-Datei die Umgebungsvariable setzen und rufen Sie dann NUnit auf.

+4

Visual Studio lehnt es ab, alles außer ausführbaren Dateien (EXE) im Pfad für das Programm zu akzeptieren. – Tobi

1

Wenn Sie keine Bat-Dateien zum Einrichten Ihrer Umgebung verwenden können, besteht die einzige Möglichkeit darin, eine systemweite Umgebungsvariable einzurichten. Sie können diese finden, indem

  1. Rechts tun auf „Arbeitsplatz“
  2. Wählen Sie Eigenschaften
  3. Wählen Sie die Registerkarte „Erweitert“
  4. Klicken Sie auf „Umgebungsvariablen“ Taste
  5. In den „Systemvariablen "Abschnitt, fügen Sie die neue Umgebungsvariable, die Sie
  6. wünschen‚Ok‘den ganzen Weg aus, um die Änderungen zu übernehmen

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

+0

Mark, ich glaube, die Anforderung war für die Umgebung, in der das Programm gestartet wurde, nicht für die Benutzer- oder Systemumgebungen. –

+0

Ja, es ist eine Umgebungsvariable, die alle .NET-Apps beeinflusst (COMplus_Version, es setzt Runtime-Version), so dass es systemweit keine Option ist. – Tobi

+0

Yup - verpasst das. Es tut uns leid. – Mark

0

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 mir nicht sicher, wie einfach das in Ihren Prozess passt.

4

Visual Studio 2003 scheint nicht zu ermöglichen, Umgebungsvariablen für das Debuggen festzulegen.

Was ich in C/C++ mache, ist _putenv() in main() und setzen Sie alle Variablen. Normalerweise umgebe ich es mit einer um sicherzustellen, dass nur bestimmte Builds es haben.

_putenv("MYANSWER=42"); 

Ich glaube, man kann mit C# das gleiche zu tun mit os.putenv(), dh

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

Diese nur die envrironment Variable für den Shell-Prozess festgelegt wird, und als solche ist eine ephemere Einstellung, wonach Sie suchen.

Übrigens, es ist gut, Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) zu verwenden, die ein sysinternals Werkzeug ist. Sie können die Kopie der Umgebungsvariablen eines bestimmten Prozesses sehen, damit Sie überprüfen können, was Sie festgelegt haben.

1

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

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

Das von NUnit's help pages ist.

2

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

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

Aber Sie werden den folgenden Namespace

using System.Collections; 

müssen Sie die vollständige Liste der Variablen, die mit dieser überprüfen kann:

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

OMG, ich habe nach der letzten halben Stunde gesucht, um diesen einfachen Aufruf Environment.SetEnvironmentVariable() zu finden. Vielen Dank! – Alan

Verwandte Themen