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