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

Как поделиться App.config?

Как я могу обмениваться/связывать App.config или Web.config между несколькими проектами в визуальном студийном решении?

4b9b3361

Ответ 1

В диалоговом окне Добавить существующий элемент, который вы получаете из Visual Studio Solution Explorer, вы можете добавить ссылку на другой файл на диске в проект. Чтобы сделать это, вам нужно щелкнуть стрелку вниз в правой части кнопки Добавить и выбрать Добавить как ссылку.

Ответ 2

Другой подход от Microsoft:

Используйте fileattribute элемента <appSettings> чтобы указать внешний файл, который будет определять общие элементы <appSettings>.

Внешний файл будет иметь ту же схему, что и файл app.config, за исключением того, что корневой узел должен быть <appSettings> а не <configuration>.

Создание общего файла конфигурации:

  1. В меню "Файл" выберите "Создать", затем "Файл".
  2. В диалоговом окне "Создать файл" выполните следующие действия:

    а. В области "Категории" выберите "Общие".
    б. На панели "Шаблоны" выберите "Файл XML".
    с. Нажмите кнопку "Открыть", чтобы создать новый общий файл настроек конфигурации.

  3. Добавьте новый элемент <appSettings>.

  4. Добавьте как можно больше общих параметров конфигурации в узел <appSettings> используя элементы <add> же, как и с любым обычным файлом app.config.

  5. Сохраните файл конфигурации.

Указание общего конфигурационного файла в каждом проекте

  1. Откройте файл app.config каждого клиентского проекта.

  2. Перейдите к <appSettings> в узле <configuration>. Если элемент не существует, добавьте новый.

  3. Добавьте новый атрибут в элемент <appSettings> и укажите относительный путь общего файла конфигурации как его значение.
    Теперь клиентский проект сможет получить доступ к общим настройкам конфигурации.

пример

В следующем примере показано, как определить общие параметры конфигурации во внешнем файле.

        <?xml version="1.0" encoding="utf-8" ?>
        <appSettings>
            <add key="commonSetting1" value="MyApplication1" />
            <add key="commonSetting2" value="MySetting" />
        </appSettings>

В следующем примере показано, как указать путь к общему файлу конфигурации в файле app.config проектов.

        <?xml version="1.0" encoding="utf-8" ?>
        <appSettings file="c:\commonSettings.config">
            <add key="myAppSpecificSetting" value="Setting1" />
        </appSettings> 

Как показано в примере, клиент проектов app.config файл может иметь дополнительные настройки, указанные в <appSettings> а также указывать на общий файл конфигурации. Если один и тот же параметр указан несколько раз, используется последнее заданное значение. Если тот же параметр указан как в общем файле конфигурации, так и в файле app.config проекта клиента, используется значение, указанное в общем файле конфигурации.

Ответ 3

Прежде всего, помните, что App.config или web.config висбречен ко всему коду, запущенному в любом проекте, который используется в "процессе", установленном в проекте запуска в рамках решения... т.е. если ваше решение имеет одно консольное приложение и 5 библиотек классов или одно приложение WinForms и 4 библиотеки классов или одну службу WIndows и 3 библиотеки классов или одно консольное приложение, используемое в качестве проекта запуска, а другое консольное приложение используется как класс библиотеки, то у вас нет проблем, конфигурация app.config и все файлы, на которые имеются ссылки, видны из всех проектов.

Во-вторых, если в вашем решении будут выполняться два или более отдельных исполняемых процесса (например, служба Windows как сервер, и клиент winforms), тогда, если вы хотите, чтобы они обменивались конкретными настройками конфигурации, вы мог поместить эти параметры в файл machine.config, хотя вы должны быть осторожны в этом.. и некоторые команды серверных серверов нахмурились.

Ответ 4

Согласно сообщению nawfal, используйте атрибут configSource, если вы хотите манипулировать параметрами appSettings с помощью ConfigurationManager:

<?xml version="1.0" encoding="utf-8" ?>
<appSettings configSource="c:\commonSettings.config">
    <add key="myAppSpecificSetting" value="Setting1" />
</appSettings>