3

У меня есть две библиотеки DLL: один с web.config, другой с app.configweb.config переопределяет app.config ... почему?

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

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

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

+0

Вы, кажется, будет определено, что некоторые из ваших конфигураций находятся где-то, кроме файла web.config, когда это не является нормой. Если вы можете добавить к своему вопросу * почему * вы хотите/нуждаетесь в том, чтобы эта конфигурация была сохранена в другом месте, возможно, некоторые другие ответы могут быть добавлены, чтобы помочь вам. –

+0

Я не понимал, что web.config является глобальным для всего приложения. Я думал, что он доступен только в этой DLL, поэтому я хотел сохранить все строки подключения и пользовательские настройки в среднем слое, который можно вызвать из других DLL. – 2010-06-03 10:49:05

ответ

7

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

app.config для EXEs переименован в < Применение > .exe.config, и используется EXE

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

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

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

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

+0

Спасибо за ответ. Мне нужен файл конфигурации для библиотеки классов. Он сохранит строки подключения и другие настройки. Как создать exe из файла конфигурации? – 2010-06-03 10:03:54

+0

Можете ли вы подтвердить, что в каждой DLL невозможно иметь 1 файл конфигурации? У меня более 5 DLL, и я надеялся, что у меня будет файл конфигурации для каждой из этих DLL. Можно ли использовать confiSource, который указывает на другую DLL? В противном случае все файлы конфигурации должны находиться в проекте запуска? Это веб-проект в моем примере. – 2010-06-03 10:21:34

+0

Вся конфигурация, которую эти DLL будут читать, должна быть в файле web.config - вам придется объединить всю эту конфигурационную информацию самостоятельно. Как я уже сказал, configSource вряд ли решит вашу проблему, потому что это в основном способ сказать «прочитать все» строки подключения из этого, другого, файла ». –