Я зашел на эту страницу, потому что у меня есть конфиденциальная информация в параметрах командной строки, и я не хотел, чтобы они хранились в репозитории кода. Я использовал переменные системной среды для хранения значений, которые можно было установить на каждой машине сборки или разработки по мере необходимости для каждой цели. Расширение переменных среды отлично работает в пакетных процессах оболочки, но не в Visual Studio.
Параметры запуска Visual Studio:
Однако Visual Studio возвращает не значение переменной, а имя переменной.
Пример проблемы:
Моим окончательным решением после нескольких попыток здесь, на SO, было написать быстрый поиск переменной Environment в моем процессоре аргументов. Я добавил проверку на% во входящем значении переменной, и если он найден, найдите переменную среды и замените значение. Это работает в Visual Studio и в моей среде сборки.
foreach (string thisParameter in args)
{
if (thisParameter.Contains("="))
{
string parameter = thisParameter.Substring(0, thisParameter.IndexOf("="));
string value = thisParameter.Substring(thisParameter.IndexOf("=") + 1);
if (value.Contains("%"))
{ //Workaround for VS not expanding variables in debug
value = Environment.GetEnvironmentVariable(value.Replace("%", ""));
}
Это позволяет мне использовать один и тот же синтаксис в моих образцах пакетных файлов и при отладке с помощью Visual Studio. Информация об аккаунте или URL-адреса не сохранены в GIT.
Пример использования в партии