Подтвердить что ты не робот

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

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

EDIT:

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

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

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

4b9b3361

Ответ 1

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

Откройте проект. Перейдите в Project → Properties... В разделе "Свойства конфигурации" → "Отладка" отредактируйте значение "Environment", чтобы установить переменные среды.

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

Вот скриншот диалога настроек

Ответ 2

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

В C/С++ я использую _putenv() в main() и задаю любые переменные. Обычно я окружаю его с помощью #if defined DEBUG_MODE / #endif, чтобы убедиться, что у него есть только определенные сборки.

_putenv("MYANSWER=42");

Я считаю, что вы можете сделать то же самое с С#, используя os.putenv(), т.е.

os.putenv('MYANSWER', '42');

Они будут устанавливать переменную envrironment только для этого процесса оболочки, и, таким образом, это эфемерная настройка, которую вы ищете.

Кстати, полезно использовать обработчик процессов (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx), который является инструментом sysinternals. Вы можете видеть, что представляет собой экземпляр переменных среды данного процесса, поэтому вы можете подтвердить, что то, что вы установили, - это то, что вы получили.

Ответ 3

В Visual Studio для Mac и С# вы можете использовать:

Environment.SetEnvironmentVariable("<Variable_name>", "<Value>");

Но вам понадобится следующее пространство имен

using System.Collections;

вы можете проверить полный список переменных следующим образом:

foreach (DictionaryEntry de in Environment.GetEnvironmentVariables())
            Console.WriteLine("  {0} = {1}", de.Key, de.Value);

Ответ 4

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

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

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

Ответ 5

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

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

Это из страниц справки NUnit.

Ответ 6

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

Ответ 7

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