Почему атрибут файла appSettings не разрешает путь к родительскому каталогу?

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

<appSettings file="..\Common Configs\Common.config">

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

<appSettings file="..\App1\Common.config">

где App1 — это папка, в которой находится исполняемый файл.

Эта страница предполагает, что ConfigSource не разрешает пути к родительскому элементу, а атрибут file разрешает.

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

Кто-нибудь знает, почему это не работает? Как еще я могу развернуть это с помощью общего файла конфигурации?

Структура папок имеет следующий вид:

Решение

  • Общие конфигурации

    • Common.config
  • Приложение1

    • App1.exe

    • App1.exe.config

  • Приложение2

    • App2.exe

    • App2.exe.config


person Patrick Stephansen    schedule 06.07.2012    source источник
comment
Можете ли вы опубликовать полную структуру папок?   -  person Chris Gessler    schedule 06.07.2012
comment
Работает ли это, если файл конфигурации находится непосредственно в родительском каталоге (а не в другом подкаталоге)?   -  person Damien_The_Unbeliever    schedule 06.07.2012
comment
Это, безусловно, работает, когда все файлы являются локальными, поэтому, возможно, аспект общего доступа к файлам является важным. (Только что попробовал под .NET 4.5RC, консольное приложение)   -  person Damien_The_Unbeliever    schedule 06.07.2012
comment
Это не работает, если файл конфигурации находится непосредственно в родительском каталоге. Как ни странно, это работает, если я скопирую Common.config в папку App1 и напишу <appSettings file="..\App1\Common.config"> в App1.exe.config (перейдите в родительский каталог и снова перейдите вниз).   -  person Patrick Stephansen    schedule 06.07.2012


Ответы (1)


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

Вам нужно будет выбрать каждый проект, которому нужен файл конфигурации, и выбрать «Добавить существующий элемент». Оттуда выберите файл, затем «Добавить как ссылку».

Это позволит вам поддерживать один файл конфигурации и развертывать его рядом с каждым исполняемым файлом.

Затем, когда вы ссылаетесь на него через раздел appSettings, вы можете просто напрямую ссылаться на файл.

person Brian Dishaw    schedule 06.07.2012
comment
Это полезно во время разработки, и я делаю что-то подобное. Моя проблема в том, что после его развертывания мне нужна только одна копия общей конфигурации. - person Patrick Stephansen; 06.07.2012