Что происходит с файлом app.config, когда я ссылаюсь на библиотеку классов

#c# #.net-3.5 #app-config #class-library

#c# #.net-3.5 #app-config #class-library

Вопрос:

У меня есть библиотека классов с файлом app.config с 4 настройками в нем. Ранее, когда я пробовал это (VS2008), как только я ссылался на библиотеку, я не мог получить доступ к конфигурационному файлу / приложение ломалось, но по какой-то причине это работает сейчас. Я ссылался на библиотеку в 3 приложениях, и я все еще могу получить доступ к настройкам, но фактический конфигурационный файл отсутствует.

Компилируется ли файл конфигурации вместе с библиотекой, как только вы ссылаетесь на него, или что с ним происходит?

(работает в vs2010)

Ответ №1:

Вероятно, это работает, потому что в сгенерированных настройках есть значения по умолчанию.Файл Designer.cs. Более важный вопрос: как я могу изменить свои настройки?

И для этого потребуется скопировать или объединить соответствующие разделы XML из библиотеки app.config в библиотеку ссылающегося приложения.

Комментарии:

1. Если я объединю файлы конфигурации, смогу ли я изменить настройки библиотеки, не изменяя способ взаимодействия библиотеки с настройками, т.Е.: Свойства. Настройки. По умолчанию.. или мне понадобится какой-нибудь менеджер

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

Ответ №2:

Файл конфигурации переименован; «приложение» заменяется именем вашей сборки. Итак, если ваш app.config связан, скажем Foo.exe , с программой, то в вашей выходной папке (например bindebug ) у вас должен быть Foo.exe.config . Если ваш app.config связан с библиотекой классов, скажем Bar.dll , тогда в выходной папке это будет Foo.dll.config .

Комментарии:

1. Кроме того, для любого .settings файла, который вы добавляете в проект, эти настройки также попадают в app.config (а не в отдельный конфигурационный файл).

2. Я просмотрел все файлы .settings в проекте, который ссылается на dll и все файлы .config, и не смог найти соответствующие settings. ps. Я знаю, что мои настройки сохранены -> lib.dll.config. Библиотека имеет значения по умолчанию. Настройки не находятся в отдельном файле или файле my.exe.config

3. Вы редактировали файлы .settings напрямую или через пользовательский интерфейс конструктора настроек? Пользовательский интерфейс генерирует код в .settings.designer.cs файле (или vb ), который, я полагаю, является источником ваших значений по умолчанию. (Я спрашиваю только потому, что допустил эту ошибку 🙂 Если вы прошли через пользовательский интерфейс, и что-то по-прежнему не отображается, единственное, что я могу предложить, это удалить, а затем воссоздать файлы app.config и .settings. (Сделайте резервную копию или, по крайней мере, сделайте скриншоты, прежде чем делать это.)