2008-09-19 14 views
38

In un progetto di libreria di classi, ho impostato "Avvia azione" nella scheda Debug delle proprietà del progetto su "Avvia programma esterno" (NUnit in questo caso). Voglio impostare una variabile di ambiente nell'ambiente in cui è avviato questo programma. Come faccio? (E 'anche possibile?)Come impostare variabili di ambiente specifiche durante il debug in Visual Studio?

EDIT:

Si tratta di una variabile d'ambiente che influenza tutte le applicazioni .NET (COMplus_Version, imposta la versione runtime) in modo impostazione a livello di sistema in realtà non è un'opzione.

Come soluzione temporanea, ho appena forzato NUnit a iniziare nella versione .NET corretta (2.0) impostandola in nunit.exe.config, sebbene sfortunatamente questo significhi anche che tutti i miei test di unità .NET 1.1 vengano ora eseguiti anche in .NET 2.0. Probabilmente dovrei semplicemente fare una copia dell'eseguibile in modo che possa avere il proprio file di configurazione ...

(Sto mantenendo la domanda aperta (non accettando una risposta) nel caso qualcuno capiti di scoprire come (potrebbe essere utile anche per altri scopi dopo tutto ...))

+0

Vuoi una variabile di ambiente specifica per questo progr sono solo? –

risposta

59

In Visual Studio     2008 e Visual Studio     2005 almeno, è possibile specificare le modifiche alle variabili di ambiente nelle impostazioni del progetto.

Apri il tuo progetto. Vai a Progetto -> Proprietà ... Sotto Proprietà di configurazione -> Debug, modifica il valore 'Ambiente' per impostare le variabili di ambiente.

Ad esempio, se si desidera aggiungere la directory "c: \ foo \ bin" al percorso durante il debug dell'applicazione, impostare il valore "Ambiente" su "PATH =% PATH%; c: \ foo \ bin ".

Here's a screenshot of the settings dialog

+0

Sto usando VS2008 e le mie proprietà del progetto non hanno "Proprietà di configurazione" o "Debug" su di esso. Non riesco a trovare nulla sulle variabili di ambiente ovunque sotto le proprietà del progetto. Che cosa sto facendo di sbagliato? –

+0

Modificherò questo post con uno screenshot di dove sono le impostazioni. –

+0

Ciao, come sei arrivato a questo schermo? Nelle mie proprietà di progetto VS2008 e VS2005 sembrano avere un aspetto diverso e non hanno le impostazioni dell'ambiente – Grzenio

0

Impostare un file batch che è possibile richiamare. Passare il percorso del file batch e fare in modo che il file batch imposti la variabile di ambiente e quindi invoca NUnit.

+4

Visual Studio si rifiuta di accettare qualsiasi cosa tranne eseguibili (.exe) nel percorso per l'avvio del programma. – Tobi

1

Se non è possibile utilizzare i file bat per configurare l'ambiente, l'unica opzione probabile è impostare una variabile di ambiente per tutto il sistema. È possibile trovare questi effettuando

  1. Fare clic destro "Risorse del computer"
  2. Selezionare le proprietà
  3. Selezionare la scheda "Avanzate"
  4. Clicca su "variabili d'ambiente" pulsante
  5. Nei "Variabili di sistema "sezione, aggiungi la nuova variabile di ambiente che desideri
  6. " Ok "completamente per accettare le tue modifiche

Non so se sarà necessario riavviare Visual Studio, ma sembra improbabile. HTH

+0

Mark, credo che il requisito fosse per l'ambiente in cui è stato avviato il programma, non per l'utente o gli ambienti di sistema. –

+0

Sì, è una variabile di ambiente che influenza tutte le app .NET (COMplus_Version, imposta la versione runtime) quindi impostarla su tutto il sistema non è un'opzione. – Tobi

+0

Sì, mi sono perso. Scusate. – Mark

0

Come ambienti sono ereditate dal processo genitore, si potrebbe scrivere un add-in per Visual Studio che modifica le sue variabili d'ambiente prima di eseguire l'avvio. Non sono sicuro di quanto sarebbe facile da inserire nel tuo processo.

4

Visual Studio 2003 non sembra consentire di impostare variabili di ambiente per il debug.

Quello che faccio in C/C++ è utilizzare _putenv() in main() e impostare qualsiasi variabile. Solitamente lo circondo con un #if defined DEBUG_MODE/#endif per assicurarmi che solo alcune build lo abbiano.

_putenv("MYANSWER=42"); 

credo che si può fare la stessa cosa con C# utilizzando os.putenv(), vale a dire

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

Questi saranno impostare la variabile envrironment solo per quel processo di shell, e come tale è una effimera impostazione, che è quello che stai cercando.

A proposito, è utile utilizzare Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx), che è uno strumento sysinternals. Puoi vedere cos'è una copia delle variabili di ambiente di un determinato processo, quindi puoi verificare che ciò che hai impostato sia ciò che hai ottenuto.

1

partire con NUnit 2.5 è possibile utilizzare/interruttore quadro es .:

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

Questo è da NUnit's help pages.

2

In Visual Studio per Mac e C# è possibile utilizzare:

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

Ma è necessario il seguente spazio

using System.Collections; 

è possibile controllare la lista completa delle variabili con questo:

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

OMG, ho cercato l'ultima mezz'ora per trovare quella semplice chiamata Environment.SetEnvironmentVariable(). Grazie! – Alan