Как установить определенные переменные среды при отладке в Visual Studio?

StackOverflow https://stackoverflow.com/questions/100543

Вопрос

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

РЕДАКТИРОВАТЬ:

Это переменная среды, которая влияет на все приложения .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».

Here

Другие советы

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

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

Я не знаю, придется ли вам перезапускать Visual Studio, но это маловероятно.ХТХ

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top