Могу ли я добавить значения конфигурации web / app в проект автоматически при ссылке на мою dll? - PullRequest
2 голосов
/ 28 июля 2011

Если есть dll, которая зависит от наличия небольшого набора ключей настройки приложения или, может быть, небольшого пользовательского раздела XML во время выполнения, есть ли событие, на которое я могу ответить в моей сборке, когда возникает ссылка, на которую я могуиспользовать для записи в файл конфигурации проекта, чтобы убедиться, что значения по умолчанию существуют?

Ответы [ 3 ]

3 голосов
/ 01 августа 2011

Нет, вы не можете, и для этого есть причина.

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

Что если, в конце концов, Я не хочу, чтобы у моего приложения был файл конфигурации ?Если мое приложение представляет собой веб-часть SharePoint или какой-либо плагин для веб-сайта, и нет доступа (производство) web.config из среды разработки?

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

Возьмите NLog в качестве хорошего примера.Он позволяет указывать настройки и , используя код API и XML-конфигурацию , которая также может находиться в разделе конфигурации приложения, отдельный файл в том же файлекаталог или в каталоге библиотеки .Это может быть излишним для ваших целей;Я просто говорю, что вы должны рассмотреть все варианты использования, прежде чем придерживаться определенного решения конфигурации .

3 голосов
/ 02 августа 2011

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

Все, что от вас требуется, - это создать пакет, содержащий вашу сборку, а затем использовать расширения NuGet Visual Studio для ссылки на этот пакет.

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

NuGet также широко освещается здесь, в StackOverflow , так что вы легко найдете все, чтобы начать.

1 голос
/ 28 июля 2011

Работа с точечной сеткой не предоставляет методов для обратной записи в файл конфигурации ... однако это всего лишь XML-файл, для которого точка содержит много функций, для быстрого поиска придумали Запись на адрес. Файл конфигурации NET-приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...