веб-конфигурация</appSettings> - PullRequest
2 голосов
/ 12 июля 2010

Привет! Я пытаюсь использовать appsettings в webconfig для указания на отдельный файл конфигурации, единственная проблема в том, что файл конфигурации хранится в отдельном проекте, это вообще возможно для ссылки на конфигурацию приложения в отдельномпроект?

1 Ответ

1 голос
/ 26 октября 2011

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

Если вы хотите иметь конфигурационный файл, общий для нескольких проектов, я обнаружил, что ConfigGen является хорошим решением. Это генератор конфигурации, который создает разные (или в вашем случае одинаковые) файлы конфигурации для разных машин. Он использует следующую типичную командную строку, где -s - это XML-файл настроек, содержащий отличия, относящиеся к среде, которые необходимо ввести в различные выходные файлы. -t это файл шаблона, который может содержать маркеры-заполнители для настроек из файла настроек. И -o это выходная папка:

cfg.exe -s AppSettings.Config.Settings.xls -t AppSettings.Config.Template.xml -o Configs -ves "EmptyString"

В вашем случае ваши настройки и файлы шаблонов будут находиться в общем каталоге и добавлены предварительный этап сборки для импорта и создания локального файла AppSettings. Это требует немного другой командной строки. Я завернул его в шаг BeforeBuild, который вы поместили бы в файл csproj:

<Target Name="BeforeBuild">
    <Exec Command="cfg -s X:\sharedConfig\AppSettings.Config.Settings.xls 
     -t X:\sharedConfig\AppSettings.config.template.xml 
     -l -n $(ProjectDir)AppSettings.config" />
</Target>

В этом случае X: \ sharedconfg \ - это сопоставленное расположение ваших шаблонов и настроек, и есть 2 новых аргумента, -l и -n. -l означает только локальный файл, поэтому он ищет в файле настроек строку, соответствующую машине, на которой выполняется сборка. Если у вас нет такой строки, она будет искать строку с именем «default», которая должна быть у вас.

Аргумент -n позволяет вам указать точное местоположение, в которое вы хотите поместить выходной файл.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...