Как я могу обмениваться/связывать App.config или Web.config между несколькими проектами в визуальном студийном решении?
Как поделиться App.config?
Ответ 1
В диалоговом окне Добавить существующий элемент, который вы получаете из Visual Studio Solution Explorer, вы можете добавить ссылку на другой файл на диске в проект. Чтобы сделать это, вам нужно щелкнуть стрелку вниз в правой части кнопки Добавить и выбрать Добавить как ссылку.
Ответ 2
Другой подход от Microsoft:
Используйте fileattribute элемента
<appSettings>
чтобы указать внешний файл, который будет определять общие элементы<appSettings>
.Внешний файл будет иметь ту же схему, что и файл app.config, за исключением того, что корневой узел должен быть
<appSettings>
а не<configuration>
.Создание общего файла конфигурации:
- В меню "Файл" выберите "Создать", затем "Файл".
В диалоговом окне "Создать файл" выполните следующие действия:
а. В области "Категории" выберите "Общие".
б. На панели "Шаблоны" выберите "Файл XML".
с. Нажмите кнопку "Открыть", чтобы создать новый общий файл настроек конфигурации.Добавьте новый элемент
<appSettings>
.Добавьте как можно больше общих параметров конфигурации в узел
<appSettings>
используя элементы<add>
же, как и с любым обычным файлом app.config.Сохраните файл конфигурации.
Указание общего конфигурационного файла в каждом проекте
Откройте файл app.config каждого клиентского проекта.
Перейдите к
<appSettings>
в узле<configuration>
. Если элемент не существует, добавьте новый.Добавьте новый атрибут в элемент
<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>