Как установить определенные переменные среды при отладке в 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.

Вы можете установить его в Property > Configuration Properties > Debugging > Environment.

Если вы используете 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-файлы для настройки своей среды, то единственно вероятным вариантом является настройка общесистемной переменной среды. Вы можете найти их, выполнив

  1. Щелкните правой кнопкой мыши "Мой компьютер"
  2. Выберите свойства
  3. Выберите вкладку "Дополнительно"
  4. Нажмите кнопку "переменные среды"
  5. В разделе "Системные переменные" добавьте новую переменную среды, которую вы хотите
  6. "Хорошо" полностью принять ваши изменения

Я не знаю, нужно ли вам перезапускать визуальную студию, но кажется маловероятным. НТН

Другие вопросы по тегам