C # совместное использование app.config между несколькими проектами

Я работаю над решением для нескольких проектов.

Я следую описанному здесь методу (первый ответ, предлагающий использовать общий элемент решения): single app.config для нескольких проектов c #

В результате для каждого проекта файл app.config копируется и переименовывается в XXX.exe.config.

Однако желательно, чтобы имя файла конфигурации оставалось одинаковым (например, App.config) для каждого проекта. Потому что я хотел поместить все исполняемые файлы и библиотеки DLL в одну папку при ее развертывании (некоторая исполняемая ссылка на одну и ту же DLL, поэтому имеет смысл собрать их все вместе).

Любое предложение приветствуется.


person Johnyy    schedule 10.11.2011    source источник
comment
Зачем вам нужна копия одного и того же файла конфигурации для каждого проекта? Почему бы не перенести ваши ценности в один проект и не сделать так, чтобы этот проект публично поделился этими ценностями, сделав их доступными для других проектов?   -  person Bernard    schedule 10.11.2011
comment
@Bernard. В производственных средах использование настроек из файлов конфигурации (и наличие нескольких файлов конфигурации и общих параметров конфигурации) имеет большой смысл. Я работаю над проектом с более чем 30 сервисными проектами (веб-сайт и WCF, размещенный в Win), и количество общих настроек сводило нас с ума (пока мы не изменили их все на использование файлов TT).   -  person Gone Coding    schedule 10.11.2011


Ответы (2)


Вы можете загрузить файл конфигурации вручную. См. Обсуждение здесь: Использование ConfigurationManager для загрузки конфигурации из произвольного места

person ElDog    schedule 10.11.2011

Я предлагаю вам взглянуть на использование шаблонов TT. Тогда простое решение - иметь файл App.tt, включающий общий файл ttinclude. Это создаст файл App.config с таким же (или другим) содержимым на основе других параметров, которые вы, возможно, захотите установить в app.config.

Например, у нас есть App.Config, который выглядит так:

<# EnvironmentName = "local"; #>
<#@ include file="App.Template.ttinclude" #>

App.Template.ttinclude содержит все, что мы хотим вывести (вместе с некоторыми настройками, которые меняются в зависимости от значения Environment, поскольку мы поддерживаем 8 сред установки.

Каждый App.Template.ttinclude на самом деле включает в себя другой главный файл конфигурации, который содержит наши общие настройки, но это начинает усложняться, поскольку мы включаем конфигурации для конкретной среды в главный файл конфигурации в оператор switch (чтобы обойти ошибку в файле TT обработка).

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

например MyApp.Exe.config содержит:

<#@ include file="App.tt" #>
person Gone Coding    schedule 10.11.2011