87 votes

Comment définir des variables d'environnement spécifiques lors du débogage dans Visual Studio ?

Sur un projet de bibliothèque de classes, j'ai réglé l'action de démarrage dans l'onglet Debug des propriétés du projet sur "Démarrer un programme externe" ( NUnit dans ce cas). Je souhaite définir une variable d'environnement dans l'environnement dans lequel ce programme est lancé. Comment faire ? (Est-ce possible ?)

EDITAR:

Il s'agit d'une variable d'environnement qui influence toutes les applications .NET (COMplus_Version, qui définit la version d'exécution), de sorte qu'il n'est pas possible de la définir à l'échelle du système.

Pour contourner le problème, j'ai forcé NUnit à démarrer avec la bonne version de .NET (2.0) en le paramétrant dans le fichier nunit.exe.config Malheureusement, cela signifie aussi que tous mes tests unitaires .NET 1.1 sont maintenant exécutés en .NET 2.0. Je devrais probablement faire une copie de l'exécutable pour qu'il puisse avoir son propre fichier de configuration...

(Je laisse la question ouverte (sans accepter de réponse) au cas où quelqu'un trouverait comment faire (cela pourrait être utile à d'autres fins après tout...))

97voto

John Dibling Points 56814

Dans Visual Studio 2008 et Visual Studio 2005 au moins, vous pouvez spécifier les modifications des variables d'environnement dans les paramètres du projet.

Ouvrez votre projet. Allez dans Projet -> Propriétés... Sous Configuration Properties -> Debugging, modifiez la valeur 'Environment' pour définir les variables d'environnement.

Par exemple, si vous souhaitez ajouter le répertoire "c : \foo\bin "au chemin d'accès lors du débogage de votre application, définissez la valeur 'Environment' à "PATH=%PATH%;c : \foo\bin ".

Here's a screenshot of the settings dialog

15voto

Wouter Vanherck Points 510

Dans Visual Studio 2019, faites un clic droit sur votre projet, choisissez Properties . Dans la fenêtre des propriétés du projet, sélectionnez l'option Debug tab. Ensuite, sous Environment variables changer la valeur de votre environnement de Development a Production ou d'autres environnements. Pour .Net Core et .Net 5, la propriété est appelée ASPNETCORE_ENVIRONMENT .

enter image description here

14voto

CRUZ Points 127

Dans Visual Studio pour Mac et C#, vous pouvez utiliser :

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

Mais vous aurez besoin de l'espace de noms suivant

using System.Collections;

vous pouvez vérifier la liste complète des variables avec ceci :

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

9voto

Visual Studio 2003 ne semble pas permettre de définir des variables d'environnement pour le débogage.

En C/C++, j'utilise _putenv() en main() et définir les variables. En général, je l'entoure d'un #if defined DEBUG_MODE / #endif pour s'assurer que seules certaines versions en disposent.

_putenv("MYANSWER=42");

Je crois que vous pouvez faire la même chose en C# en utilisant os.putenv(), c'est-à-dire

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

Elles définissent la variable d'environnement pour ce processus shell uniquement, et constituent donc un paramètre éphémère, ce qui est ce que vous recherchez.

D'ailleurs, il est bon d'utiliser l'explorateur de processus ( http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx ), qui est un outil sysinternal. Vous pouvez voir quelle est la copie des variables d'environnement d'un processus donné, ce qui vous permet de vérifier que ce que vous avez défini correspond bien à ce que vous avez obtenu.

2voto

Tymek Points 1305

À partir de NUnit 2.5, vous pouvez utiliser le commutateur /framework, par exemple :

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

Il s'agit de Pages d'aide de NUnit .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X