В проекте библиотеки классов я установил для «Действие при запуске» на вкладке «Отладка» свойств проекта значение «Запуск внешней программы» (в данном случае NUnit). Я хочу установить переменную среды в среде, в которой запущена эта программа. Как мне это сделать? (Это вообще возможно?)
Обновлено:
Это переменная среды, которая влияет на все приложения .NET (COMplus_Version, она устанавливает версию среды выполнения), поэтому установка ее для всей системы на самом деле не вариант.
В качестве обходного пути я просто заставил NUnit запустить правильную версию .NET (2.0), установив его в nunit.exe.config, хотя, к сожалению, это также означает, что все мои модульные тесты .NET 1.1 теперь также запускаются в .NET 2.0. Мне, вероятно, следует просто сделать копию исполняемого файла, чтобы у него был собственный файл конфигурации ...
(Я оставляю вопрос открытым (не принимаю ответа) на случай, если кто-то действительно узнает, как (в конце концов, это может быть полезно и для других целей ...))





Настройте командный файл, который вы можете вызвать. Передайте путь к пакетному файлу, и пусть пакетный файл установит переменную среды, а затем вызовет NUnit.
Visual Studio отказывается принимать что-либо, кроме исполняемых файлов (.exe) в пути для запуска программы.
Если вы не можете использовать файлы bat для настройки своей среды, то единственный вероятный вариант - настроить общесистемную переменную среды. Вы можете найти их, выполнив
Я не знаю, придется ли вам перезапускать Visual Studio, но это маловероятно. HTH
Марк, я считаю, что требовалось окружение, в котором была запущена программа, а не пользовательская или системная среда.
Да, это переменная среды, которая влияет на все приложения .NET (COMplus_Version, она устанавливает версию времени выполнения), поэтому установка ее для всей системы на самом деле не вариант.
Я прошел через определение переменной среды на уровне пользователя («Мой компьютер»> «Свойства»> «Дополнительно»). Запустите новый экземпляр командной оболочки и на всякий случай введите% NEW_VAR%. Запустите новый экземпляр devenv и приступайте к отладке.
По крайней мере, в Visual Studio 2008 и Visual Studio 2005 вы можете указать изменения переменных среды в настройках проекта.
Откройте свой проект. Перейдите в Project -> Properties ... В Configuration Properties -> Debugging отредактируйте значение «Environment», чтобы установить переменные среды.
Например, если вы хотите добавить каталог «c: \ foo \ bin» к пути при отладке приложения, установите значение «Environment» на «PATH =% PATH%; c: \ foo \ bin».
Я использую VS2008, и в свойствах моего проекта нет «Свойства конфигурации» или «Отладка». Я не могу найти ничего о переменных среды в свойствах проекта. Что я делаю не так?
Я отредактирую этот пост со скриншотом, где находятся настройки.
Привет, как вы попали на этот экран? В моем VS2008 и VS2005 свойства проекта выглядят по-разному, и у них нет настроек среды.
Это свойства для проектов C / C++. Я думаю, вы используете C# или VB.NET
Всем привет. Я заметил, что некоторые из моих разработчиков, которые все работают на C++, также не могут видеть эти свойства. В конце концов оказалось, что именно так и установили MSVC. Когда они переустановили MSVC со всеми включенными параметрами, они смогли увидеть все эти свойства, а также другие функции IDE.
к сожалению, это недоступно для удаленной отладки.
Также, похоже, недоступен для веб-проектов.
Есть ошибка, не позволяющая добавлять несколько переменных. См. Обходной путь в: connect.microsoft.com/VisualStudio/feedback/details/739477/…
Скриншот недоступен (пуст) - ссылка не работает?
@PeterMortensen: Исправлено.
Ничего отдаленно похожего на это в VS2017
Поскольку среды унаследованы от родительского процесса, вы можете написать надстройку для Visual Studio, которая изменяет свои переменные среды перед запуском. Я не уверен, насколько легко это было бы включить в ваш процесс.
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. Вы можете видеть, что такое копия переменных среды данного процесса, так что вы можете проверить, что то, что вы установили, - это то, что у вас есть.
Начиная с NUnit 2.5, вы можете использовать переключатель / framework, например:
nunit-console myassembly.dll /framework:net-1.1
Это из Страницы справки NUnit.
В 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);
OMG, последние полчаса я искал этот простой вызов Environment.SetEnvironmentVariable (). Спасибо!
Это объясняет, как установить глобальную переменную среды из кода. В вопросе это прямо упоминается как нежелательное.
Вам нужна переменная среды специально только для этой программы?