C#: управляйте Несколькими файлами App.config

Я сталкиваюсь с проблемой.

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

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

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

9
задан David Hall 7 January 2010 в 06:32
поделиться

3 ответа

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

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

например: в вашем файле 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"]);
10
ответ дан 4 December 2019 в 19:33
поделиться

Правильный путь - это слияние конфигурационного файла DLL в EXE; это сработает нестандартно. Но смотрите .NET DLL Settings and Config when there's a Web Reference - whats goings on? , чтобы узнать, как явно открыть конфигурационный файл и прочитать его. Проблема в том, что сначала вам нужно будет ввести FIND конфигурационный файл, а это не всегда просто. Если DLL просто сидит, вы можете проверить ту же самую директорию. Но если она в GAC, куда вы смотрите? Я предлагаю придерживаться правильного пути.

2
ответ дан 4 December 2019 в 19:33
поделиться

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

.
0
ответ дан 4 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: