Как установить определенные переменные среды при отладке в Visual Studio?
В проекте библиотеки классов я установил "Запустить действие" на вкладке "Отладка" свойств проекта "Запустить внешнюю программу" (NUnit в этом случае). Я хочу установить переменную среды в среде, в которой запущена эта программа. Как мне это сделать? (Возможно ли это?)
EDIT:
Это переменная среды, которая влияет на все .NET-приложения (COMplus_Version, она устанавливает версию исполнения), поэтому установка его в системном масштабе действительно не является вариантом.
В качестве обходного решения я просто заставил NUnit начать с правой версии .NET(2.0), установив его в nunit.exe.config
, хотя, к сожалению, это также означает, что все мои .NET-модульные тесты теперь также запускаются в .NET 2.0. Я должен, вероятно, просто сделать копию исполняемого файла, чтобы он мог иметь свой собственный файл конфигурации...
(Я оставляю вопрос открытым (не принимаю ответ), если кто-то случайно узнает, как это может быть полезно для других целей тоже...))
Ответы
Ответ 1
В Visual Studio 2008 и Visual Studio 2005, по крайней мере, вы можете указать изменения переменных среды в настройках проекта.
Откройте проект. Перейдите в Project → Properties... В разделе "Свойства конфигурации" → "Отладка" отредактируйте значение "Environment", чтобы установить переменные среды.
Например, если вы хотите добавить каталог "c:\foo\bin" в путь при отладке вашего приложения, установите для параметра "Среда" значение "PATH =% PATH%; c:\foo\bin",.
![Вот скриншот диалога настроек]()
Ответ 2
Visual Studio 2003, похоже, не позволяет вам устанавливать переменные среды для отладки.
В C/С++ я использую _putenv()
в main()
и задаю любые переменные. Обычно я окружаю его с помощью #if defined DEBUG_MODE / #endif
, чтобы убедиться, что у него есть только определенные сборки.
_putenv("MYANSWER=42");
Я считаю, что вы можете сделать то же самое с С#, используя os.putenv(), т.е.
os.putenv('MYANSWER', '42');
Они будут устанавливать переменную envrironment только для этого процесса оболочки, и, таким образом, это эфемерная настройка, которую вы ищете.
Кстати, полезно использовать обработчик процессов (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx), который является инструментом sysinternals. Вы можете видеть, что представляет собой экземпляр переменных среды данного процесса, поэтому вы можете подтвердить, что то, что вы установили, - это то, что вы получили.
Ответ 3
В Visual Studio для Mac и С# вы можете использовать:
Environment.SetEnvironmentVariable("<Variable_name>", "<Value>");
Но вам понадобится следующее пространство имен
using System.Collections;
вы можете проверить полный список переменных следующим образом:
foreach (DictionaryEntry de in Environment.GetEnvironmentVariables())
Console.WriteLine(" {0} = {1}", de.Key, de.Value);
Ответ 4
Если вы не можете использовать bat файлы для настройки своей среды, то ваш единственный вероятный вариант - настроить системную переменную окружения. Вы можете найти их, выполнив
- Щелкните правой кнопкой мыши "Мой компьютер"
- Выбрать свойства
- Выберите вкладку "Дополнительно"
- Нажмите кнопку "переменные среды"
- В разделе "Системные переменные" добавьте новую переменную среды, которую вы хотите
- "Хорошо", чтобы принять ваши изменения.
Я не знаю, придется ли вам перезапускать визуальную студию, но кажется маловероятным. НТН
Ответ 5
Начиная с NUnit 2.5 вы можете использовать переключатель /framework, например:
nunit-console myassembly.dll /framework:net-1.1
Это из страниц справки NUnit.
Ответ 6
Настройте пакетный файл, который вы можете вызвать. Передайте путь пакетному файлу и пакетный файл задает переменную окружения, а затем вызовите NUnit.
Ответ 7
Поскольку среды наследуются от родительского процесса, вы можете написать надстройку для Visual Studio, которая модифицирует свои переменные среды перед началом. Я не уверен, насколько легко это будет в вашем процессе.