web.config переопределяет app.config ... почему? - PullRequest
3 голосов
/ 03 июня 2010

У меня есть две DLL: одна с web.config, другая с app.config

Я переместил строки подключения из web.config в app.config, чтобы их могли использовать другие библиотеки DLL.

Теперь, когда я вызываю ConfigurationManager.GetSection("SomeSection"), приложение ищет web.config, когда оно должно искать app.config. Не имеет смысла, почему это происходит, потому что web.config находится в отдельной DLL.

Кто-нибудь может объяснить это, пожалуйста?

1 Ответ

7 голосов
/ 03 июня 2010

app.config для DLL никогда не будет использоваться.

app.config для EXE-файлов переименовывается в .exe.config и используется EXE-файлом

web.config используется веб-сайтами / приложениями.

По сути, если Visual Studio услужливо добавляет файл app.config в проект DLL для вас, все, что он дает, - это что-то скопировать и вставить в соответствующий конечный файл конфигурации - либо app.config из EXE, либо web.config веб-сайта / приложения.

@ vikps comment: На секунду игнорируя проблемы подкаталогов веб-сайта и configSource, вы не можете иметь более одного файла конфигурации, участвующего в конфигурации приложения. И в этом случае вам не помогут ни подкаталоги, ни configSource.

При configSource приложение может указать, что весь раздел конфигурации должен быть прочитан из альтернативного файла конфигурации. Но вы можете сделать это, только если весь раздел конфигурации существует в этом другом файле (например, вы не можете иметь раздел connectionStrings в web.config, а также загрузить еще несколько строк подключения из другого источника)

...