Как установить определенные переменные среды при отладке в Visual Studio?
В проекте библиотеки классов я установил "Начать действие" на вкладке "Отладка" свойств проекта на "Запускать внешнюю программу" (в данном случае NUnit). Я хочу установить переменную окружения в среде, в которой запускается эта программа. Как мне это сделать? (Это вообще возможно?)
РЕДАКТИРОВАТЬ:
Это переменная среды, которая влияет на все приложения.NET (COMplus_Version, она устанавливает версию времени выполнения), поэтому настройка ее в масштабе всей системы на самом деле не вариант.
В качестве обходного пути я просто заставил NUnit запускаться в правильной версии.NET (2.0), установив его в nunit.exe.config
хотя, к сожалению, это также означает, что все мои модульные тесты.NET 1.1 теперь также выполняются в.NET 2.0. Я должен, вероятно, просто сделать копию исполняемого файла, чтобы он мог иметь свой собственный файл конфигурации...
(Я держу вопрос открытым (не принимаю ответ) на тот случай, если кто-то узнает, как (это может быть полезно и для других целей, в конце концов...))
13 ответов
По крайней мере, в Visual Studio 2008 и Visual Studio 2005 вы можете указать изменения переменных среды в настройках проекта.
Откройте свой проект. Перейдите в Project -> Properties... В разделе Configuration Properties -> Debugging отредактируйте значение "Environment", чтобы установить переменные среды.
Например, если вы хотите добавить каталог "c:\foo\bin" в путь при отладке приложения, установите для параметра "Environment" значение "PATH=%PATH%;c:\foo\bin".
В Visual Studio 2019 щелкните проект правой кнопкой мыши и выберите
Properties
. В окне свойств проекта выберите
Debug
таб. Затем под
Environment variables
измените ценность вашей среды с
Development
к
Production
или в других средах. Для .Net Core и .Net 5 свойство называется
ASPNETCORE_ENVIRONMENT
.
В 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);
Visual Studio 2003, похоже, не позволяет устанавливать переменные среды для отладки.
Что я делаю в C/C++ - это использование _putenv()
в main()
и установите любые переменные. Обычно я окружаю его #if defined DEBUG_MODE / #endif
чтобы убедиться, что только определенные сборки имеют его.
_putenv("MYANSWER=42");
Я считаю, что вы можете сделать то же самое с C#, используя os.putenv(), т.е.
os.putenv('MYANSWER', '42');
Они устанавливают переменную envrironment только для этого процесса оболочки, и, таким образом, это эфемерный параметр, который вы ищете.
Кстати, хорошо использовать проводник процессов ( http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx), который является инструментом sysinternals. Вы можете увидеть, что представляет собой заданная копия процесса переменных окружения, так что вы можете проверить, что то, что вы установили, является тем, что вы получили.
В VS 2022 для .NET 5 и 6 вы можете установить переменные среды в свойствах проекта -> Отладка -> в разделе «Общие» нажмите «Открыть пользовательский интерфейс профилей запуска отладки» и прокрутите вниз до «Переменные среды».
Начиная с NUnit 2.5 вы можете использовать ключ /framework, например:
nunit-console myassembly.dll /framework:net-1.1
Это из справочных страниц NUnit.
Если вы используете VS 2019, перейдите в «Проект» -> «Свойства» -> «Отладка». проверить здесь
Добавьте ключ и значение для ваших переменных. Тогда это сделано. Проверьте launchSettings.json в папке свойств, вы должны увидеть там свою переменную.
Поскольку среды наследуются от родительского процесса, вы можете написать надстройку для Visual Studio, которая изменяет переменные среды перед выполнением запуска. Я не уверен, насколько легко это было бы вставить в ваш процесс.
Настройте командный файл, который вы можете вызвать. Передайте путь к пакетному файлу, установите пакетный файл для переменной среды и затем вызовите NUnit.
Я предпочитаю хранить все такие определения в make-файлах, т.е..*proj
или.props
- потому что они находятся под SCM. Я избегаю VS-Gui-Property-Dialogs. Большая часть конфигурации, которую вы там пишете, входит в некоторые.user
,.suo
или так, что обычно не под SCM.
Например, в случае переменных среды вы можете написать (используя текстовый редактор) что-то вроде следующего в вашем.vcxproj
:
<PropertyGroup>
<LocalDebuggerEnvironment Condition="'$(Configuration)'=='Debug'">
ANSWER=42
RUNTIME_DIR="$(g_runtime_dir)"
COLOR=octarin
</LocalDebuggerEnvironment>
</PropertyGroup>
Обратите внимание, что вы можете использовать условия MSBuild и другие свойства сборки для определения переменных среды.
ПРИМЕЧАНИЕ. Это работает для меня с VS2013 и VS2019. Я думаю, что то же самое для других версий VS + MSBuild.
В Visual Studio 2022 перейдите в обозреватель решений, щелкните правой кнопкой мыши файл проекта. Затем нажмите ссылку «Отладка» слева. Затем нажмите Открыть пользовательский интерфейс профилей отладки и запуска. Затем вы можете добавить новые переменные в поле в разделе «Переменные среды». Переменные среды
Если вы не можете использовать bat-файлы для настройки своей среды, то единственно вероятным вариантом является настройка общесистемной переменной среды. Вы можете найти их, выполнив
- Щелкните правой кнопкой мыши "Мой компьютер"
- Выберите свойства
- Выберите вкладку "Дополнительно"
- Нажмите кнопку "переменные среды"
- В разделе "Системные переменные" добавьте новую переменную среды, которую вы хотите
- "Хорошо" полностью принять ваши изменения
Я не знаю, нужно ли вам перезапускать визуальную студию, но кажется маловероятным. НТН