C #: управлять несколькими файлами App.config - PullRequest
9 голосов
/ 07 января 2010

У меня проблема.

У меня есть dll, которая взаимодействует с веб-сервисом и сохраняет конфигурацию конечной точки в своем файле app.config.

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

Есть ли способ, которым я могу использовать оба файла конфигурации. Таким образом, DLL использует свою собственную конфигурацию, тогда как хост-приложение использует свою собственную конфигурацию.

Ответы [ 3 ]

10 голосов
/ 07 января 2010

конфигурационные файлы могут включать внешние файлы.

Если вы поместите конфигурацию конечной точки во внешний файл, а затем включите ее в свой хост, вам не нужно будет каждый раз изменять конфигурацию хоста

например: в вашем файле app.config:

...
<configSections>
  ...
  <section name="myEndpoint" type="System.Configuration.DictionarySectionHandler" />
  ...
</configSections>
...
<myEndpoint configSource="myEndpoint.config" />

тогда myEndpoint.config может выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<myEndpoint>
  <add key="myKey" value="myValue" />
</myEndpoint>

и вы можете получить доступ к значениям из своего кода, аналогично чтению обычных настроек приложения, например:

var myEndpointConfig = (Hashtable)ConfigurationManager.GetSection("myEndpoint");
Console.WriteLine(myEndpointConfig["myKey"]);
2 голосов
/ 07 января 2010

Правильный способ - объединить конфигурационный файл DLL в EXE;это будет работать из коробки.Но посмотрите .NET DLL Settings and Config, когда есть веб-ссылка - что происходит? , чтобы узнать, как явно открыть файл конфигурации и прочитать его.Проблема в том, что вам сначала нужно найти файл конфигурации, а это не обязательно просто.Если DLL просто сидит, вы можете проверить тот же каталог.Но если это в GAC, где вы смотрите?Я предлагаю придерживаться правильного пути.

0 голосов
/ 07 января 2010

Это может помочь, если вы используете svcutil для генерации прокси-сервера: проверьте переключатели /config: и /mergeConfig, с помощью которых вы можете указать, какой конфигурационный файл получает сгенерированную информацию, и вы можете объединить его вместо простой перезаписи уже там.

...