Подтвердить что ты не робот

Использование app.config с библиотекой классов

Часто мне нужно создать библиотеку классов .Net, для которой требуется app.config для таких вещей, как строки подключения к базе данных. Однако эти настройки должны быть в вызывающем приложении app.config или web.config. Если я хочу распространять DLL через несколько приложений, это становится больно, потому что я должен скопировать эти параметры в каждое приложение app.config.

Я рассмотрел вручную чтение настроек конфигурации с помощью кода изнутри библиотеки классов, но это также большая боль. У кого-нибудь есть предложения по наилучшему способу загрузки параметров app.config внутри библиотеки классов?

4b9b3361

Ответ 1

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

Для получения информации об этом см. принятый ответ в этот вопрос.

Ответ 2

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

У меня будет текстовый файл с настройками по умолчанию, входящими в состав вашей библиотеки (и как часть проекта), которые могут быть распространены вместе с библиотекой для настройки параметров по умолчанию (ее можно скопировать и вставить в файл конфигурации).

Ответ 3

Пусть каждая библиотека классов определяет параметры конфигурации в настраиваемом ConfigurationSection.

Затем добавьте обработчики пользовательских разделов в файл process.exe.config.

Эта статья MSDN довольно подробно описана с примерами как в VB, так и в С#.

Он включает в себя запись довольно повторяющегося кода - Dmitryr создал этот инструмент для создания разделов конфигурации из фрагмента XML-конфигурации, которая может помочь.

Ответ 4

Вот альтернатива.

Вместо того, чтобы пытаться найти способы "объединить" ваши app.configs или даже размещать элементы конфигурации в вашей DLL (и пытаться обойти то, что "по дизайну" ), в первую очередь, попробуйте следующее:

Создайте свою DLL, но там, где вам нужен элемент Config, создайте общедоступное свойство. Когда вы создаете экземпляр класса в DLL, вы заполняете эти свойства элементами конфигурации из приложения-владельца.

Теперь конфигурация управляется на уровне владельца, а DLL - переносимой, так как вам нужно передать то, что вам нужно, во время выполнения.

Больше DLL.config!

Ответ 5

Перейдите в Свойства приложения → вкладка Настройки; добавьте там свои настройки.

Используйте Properties.Settings.Default.<SettingName> для доступа к настройке. Что это!

Ответ 6

Нет (большой) проблемы использовать собственный файл конфигурации для каждой библиотеки классов. Если вы используете vb.net, вы можете добавлять значения через панель "Мой проект" на странице "Настройки".

Единственное, что вам нужно сделать, это называть "My.Settings.Save" в настройках библиотеки классов (и не только в файле настроек основного приложения).

Это тоже работает с С# (но, вероятно, требуется более ручная работа).

Ответ 7

Если вы используете NUnit, назовите файл app.config с тем же именем, что и имя файла проекта *.nunit. Например, если вы назвали свой проект "ClassLibraryA.nunit", тогда назовите файл конфигурации библиотеки классов "ClassLibraryA.config". Они также должны находиться в той же папке/каталоге. Фактически NUnit использует это как основной файл конфигурации.

Если у вас собственный код, вам нужно убедиться, что ваш app.config(или web.config) ссылается на файл app.config библиотеки классов. Приложение заботится только о корневом app.config или web.config. Поэтому вам нужно добавить настраиваемый раздел конфигурации, который указывает на библиотеку классов app.config.

Ответ 8

Вы можете создать свой собственный XML файл (назовите его appConfig.xml или что-то, если хотите), используйте System.Xml вместо System.Configuration для его чтения и включите его вместе со своей DLL.

Ответ 9

Создайте свою библиотеку классов в другом решении. Если вы сохраните их в том же решении, вместо этого будет отображаться app.config в самой высокой иерархии.