С помощью приложения.конфигурация с библиотекой классов



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



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

642   9  

9 ответов:

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

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

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

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

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

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

этой статье является довольно полным в своем объяснении, с примерами как в VB, так и в C#.

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

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

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

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

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

больше никаких файлов.конфиг!

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

использовать Properties.Settings.Default.<SettingName> для доступа к настройкам. Вот так!

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

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

Это тоже работает с c# (но, вероятно, требует больше ручной работы).

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

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

вы можете создать свой собственный XML-файл (назовите его appConfig.xml или что-то, если вы хотите), используйте систему.Xml вместо системы.Конфигурация, чтобы прочитать его, и включить его вместе с вашей dll.

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

Comments

    Ничего не найдено.