Как установить определенные переменные среды при отладке в Visual Studio? - PullRequest
46 голосов
/ 19 сентября 2008

В проекте библиотеки классов я установил «Действие запуска» на вкладке «Отладка» свойств проекта на «Запуск внешней программы» ( NUnit в данном случае). Я хочу установить переменную окружения в среде, в которой запускается эта программа. Как мне это сделать? (Это вообще возможно?)

EDIT:

Это переменная среды, которая влияет на все приложения .NET (COMplus_Version, она устанавливает версию времени выполнения), поэтому настройка всей системы на самом деле не вариант.

В качестве обходного пути я просто заставил NUnit запускаться в правильной версии .NET (2.0), установив его в nunit.exe.config, хотя, к сожалению, это также означает, что все мои модульные тесты .NET 1.1 теперь также выполняются в .NET 2.0. Я, вероятно, должен просто сделать копию исполняемого файла, чтобы он мог иметь свой собственный файл конфигурации ...

(я держу вопрос открытым (не принимаю ответ) на случай, если кто-то узнает, как (в конце концов, это может быть полезно и для других целей ...))

Ответы [ 7 ]

68 голосов
/ 01 октября 2008

По крайней мере, в Visual Studio 2008 и Visual Studio 2005 вы можете указать изменения переменных среды в настройках проекта.

Откройте свой проект. Перейдите в Project -> Properties ... В разделе Configuration Properties -> Debugging отредактируйте значение «Environment», чтобы установить переменные среды.

Например, если вы хотите добавить каталог «c: \ foo \ bin» в путь при отладке приложения, установите для параметра «Environment» значение «PATH =% PATH%; c: \ foo \ bin» .

Here's a screenshot of the settings dialog

6 голосов
/ 19 февраля 2017

В 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);
6 голосов
/ 17 июля 2009

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

1 голос
/ 09 февраля 2012

Начиная с NUnit 2.5 вы можете использовать переключатель / framework, например ::100100

nunit-console myassembly.dll /framework:net-1.1

Это из страниц помощи NUnit .

0 голосов
/ 02 октября 2008

Поскольку среды наследуются от родительского процесса, вы можете написать надстройку для Visual Studio, которая изменяет переменные среды перед выполнением запуска. Я не уверен, насколько легко это было бы вставить в ваш процесс.

0 голосов
/ 19 сентября 2008

Если вы не можете использовать bat-файлы для настройки своей среды, то единственно вероятным вариантом является настройка общесистемной переменной среды. Вы можете найти их, выполнив

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

Не знаю, нужно ли вам перезапускать visual studio, но это маловероятно. НТН

0 голосов
/ 19 сентября 2008

Настройка командного файла, который вы можете вызвать. Передайте путь к пакетному файлу, установите пакетный файл для переменной среды и затем вызовите NUnit.

...