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