C#.NET Компиляция файла settings.settings из различных проектов в решении в 1 конфигурационный файл

#.net #projects-and-solutions #configuration-files

#.net #проекты и решения #конфигурационные файлы

Вопрос:

У меня есть решение, в котором один проект является бизнес-уровнем, а другой проект — веб-интерфейсом, который имеет проект BL в качестве ссылки. У каждого из них есть свой собственный файл settings.settings, но во время сборки файл конфигурации BL не копируется в каталог bin. Способ, которым мы обходили это раньше, — просто скопировать все настройки из BL app.config в Web-файл web.config. Но это кажется несовершенным решением.

Дополнительная информация: веб-проекту не требуется доступ к конфигурационному файлу BL, но библиотека dll BL должна иметь возможность.

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

Ответ №1:

Я думаю, что проект бизнес-уровня не должен иметь своих собственных конфигурационных файлов. На бизнес-уровне для получения настроек следует использовать Configuration Manager. Теперь, если вы обратитесь к бизнес-уровню в WebApp, он выберет значения из web.config, а если вы обратитесь к нему в приложении Windows / WPF, он получит значения из app.config.

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

Комментарии:

1. Если этот BL используется на нескольких сайтах, то в соответствии с этим методом было бы правильно добавить эти параметры конфигурации в каждый веб-проект? То есть требуется добавить определенные значения в Web.config, если вы решите использовать определенный BL? Мне нужно больше прочитать об использовании configuration manager, но я думаю, что это может быть правильным решением для меня, поэтому я собираюсь принять ваш ответ на данный момент. Спасибо, снова Tushar.