Sur un projet de bibliothèque de classes, j'ai défini "Start Action" sous l'onglet Debug des propriétés du projet sur "Start external program" ( NUnit dans ce cas). Je veux définir une variable d'environnement dans l'environnement dans lequel ce programme est démarré. Comment faire? (Est-ce même possible?)
MODIFIER:
C'est une variable d'environnement qui influence toutes les applications .NET (COMplus_Version, elle définit la version d'exécution), donc la définir à l'échelle du système n'est vraiment pas une option.
Comme solution de contournement, j'ai juste forcé NUnit à démarrer dans la bonne version .NET (2.0) en le définissant dans nunit.exe.config
, mais malheureusement, cela signifie également que tous mes tests unitaires .NET 1.1 sont désormais également exécutés dans .NET 2.0. Je devrais probablement juste faire une copie de l'exécutable pour qu'il puisse avoir son propre fichier de configuration ...
(Je garde la question ouverte (sans accepter de réponse) au cas où quelqu'un découvrirait comment (cela pourrait être utile à d'autres fins aussi après tout ...))
Dans Visual Studio 2008 et Visual Studio 2005 au moins, vous pouvez spécifier des modifications aux variables d'environnement dans les paramètres du projet.
Ouvrez votre projet. Allez dans Projet -> Propriétés ... Sous Propriétés de configuration -> Débogage, modifiez la valeur "Environnement" pour définir les variables d'environnement.
Par exemple, si vous souhaitez ajouter le répertoire "c:\foo\bin" au chemin lors du débogage de votre application, définissez la valeur "Environnement" sur "PATH =% PATH%; c:\foo\bin".
Visual Studio 2003 ne semble pas vous permettre de définir des variables d'environnement pour le débogage.
Ce que je fais en C/C++, c'est utiliser _putenv()
dans main()
et définir toutes les variables. Habituellement, je l'entoure d'un #if defined DEBUG_MODE / #endif
pour vous assurer que seules certaines versions l'ont.
_putenv("MYANSWER=42");
Je pense que vous pouvez faire la même chose avec C # en utilisant os.putenv (), c'est-à-dire.
os.putenv('MYANSWER', '42');
Ceux-ci définiront la variable d'environnement pour ce processus Shell uniquement, et en tant que tel, un paramètre éphémère, ce que vous recherchez.
Soit dit en passant, il est bon d'utiliser l'Explorateur de processus ( http://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx ), qui est un outil sysinternals. Vous pouvez voir ce qu'est la copie d'un processus donné des variables d'environnement, vous pouvez donc valider que ce que vous définissez est ce que vous avez obtenu.
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);
À partir de NUnit 2.5, vous pouvez utiliser/framework switch par exemple:
nunit-console myassembly.dll /framework:net-1.1
Cela vient de pages d'aide de NUnit .
Si vous ne pouvez pas utiliser de fichiers bat pour configurer votre environnement, votre seule option probable est de configurer une variable d'environnement à l'échelle du système. Vous pouvez les trouver en faisant
Je ne sais pas si vous devez redémarrer Visual Studio, mais cela semble peu probable. HTH
Comme les environnements sont hérités du processus parent, vous pouvez écrire un complément pour Visual Studio qui modifie ses variables d'environnement avant d'effectuer le démarrage. Je ne sais pas à quel point cela serait facile à mettre dans votre processus.
Configurez un fichier de commandes que vous pouvez invoquer. Passez le chemin d'accès au fichier de commandes et demandez au fichier de commandes de définir la variable d'environnement, puis appelez NUnit.