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

Использование переменных среды для .config файла в .NET.

Мне нужно указать путь к dll, на который ссылается сборка в файле .config. Проблема в том, что путь можно найти в env. переменная. Можно ли использовать какой-то макрос% DLLPATH% в файле .config?

4b9b3361

Ответ 1

Да, это возможно! Предположим, что у вас есть что-то подобное в вашей конфигурации:

<configuration>
  <appSettings>
    <add key="mypath" value="%DLLPATH%\foo\bar"/>
  </appSettings>
</configuration>

Затем вы можете легко получить путь с помощью:

var pathFromConfig = ConfigurationManager.AppSettings["mypath"];
var expandedPath = Environment.ExpandEnvironmentVariables(pathFromConfig);

ExpandEnvironmentVariables(string s) делает магию, заменяя все переменные среды внутри строки своими текущими значениями.

Ответ 2

Является ли это записью конфигурации, которую вы читаете, или .NET читает ее? Если вы читаете его самостоятельно, вы можете сделать соответствующую замену самостоятельно (используя Environment.ExpandEnvironmentVariables, чтобы сделать лот или Environment.GetEnvironmentVariable, если вы хотите быть более избирательным).

Если он будет читать .NET, я не знаю, как это сделать, чтобы он расширил переменные среды. Является ли файл конфигурации под вашим контролем? Не могли бы вы просто переписать его?

На самом деле, даже если вы можете сделать замену, действительно ли это то, что вы хотите сделать? Если вам нужно указать полный путь к DLL, я подозреваю, что вам нужно будет найти его через DLLPATH (проверяя его присутствие в каждой части пути), а затем подпишем% DLLPATH%\Foo.dll с полным путем к Foo.dll.