Настройки App.config, переменная окружения как частичный путь - PullRequest
1 голос
/ 14 марта 2011

Я новичок в работе с app.config и xml, и в настоящее время я делаю некоторый рефакторинг в коде, который я не написал.
В настоящее время у нас есть фрагмент, который выглядит так:

<setting name="FirstSetting" serializeAs="String">
  <value>Data Source=C:\Documents and Settings\All Users\ApplicationData\Company ...;Persist Security Info=False</value>

Что бы я хотел сделать, это вместо этого указать на что-то вроде ${PROGRAMDATA}\Company\...

Как мне этого добиться, помня, что PROGRAMDATA не всегда будет указывать на C:\ProgramData?

Ответы [ 5 ]

2 голосов
/ 23 октября 2014

использование

Environment.ExpandEnvironmentVariables(stringFromConfig);

заменяет все существующие переменные среды в строке, такие как% ProgramData%, на точные значения.

2 голосов
/ 16 марта 2011

На самом деле я не хотел менять его в коде согласно другим ответам, поскольку это устраняет необходимость иметь его в качестве параметра конфигурации.

Как оказалось, %ProgramData%\Company... - это правильный способ использования переменных среды в этом контексте.

1 голос
/ 14 марта 2011

Да, просто напишите это в настройках. Затем просто замените $ {PROGRAMDATA} во время выполнения:

        var setting = Properties.Settings.Default.FirstSetting;
        setting = setting.Replace("${PROGRAMDATA)", 
            Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
0 голосов
/ 14 марта 2011

вы можете использовать

var programDataValue = Environment.GetEnvironmentVariable("PROGRAMDATA");

, если оно исходит из переменной окружения.

0 голосов
/ 14 марта 2011

Учитывая, что PROGRAMDATA является переменной среды, вы можете получить доступ с помощью C #

String EnviromentPath = System.Environment.GetEnvironmentVariable("PROGRAMDATA", EnvironmentVariableTarget.Machine);
...