Дополнительно
Чтение параметров из app.config или web.config в .NET
Я работаю над библиотекой классов C#, которая должна иметь возможность читать настройки из файла web.config
или app.config
(в зависимости от того, ссылается ли DLL на веб-приложение ASP.NET или приложение Windows Forms).
Я обнаружил, что
ConfigurationSettings.AppSettings.Get("MySetting")
работает, но этот код был помечен Microsoft как устаревший.
Я'читал, что мне следует использовать:
ConfigurationManager.AppSettings["MySetting"]
Однако класс System.Configuration.ConfigurationManager
, похоже, не доступен из проекта библиотеки классов C#.
Каков наилучший способ сделать это?
755
20
Для Образца Приложение.конфигурации, как показано ниже:
Вы читайте выше настройках приложения, используя код, приведенный ниже:
Вам также может понадобиться, чтобы добавить ссылку на System`.Конфигурации в вашем проекте, если нет'т уже. Затем вы можете получить доступ к значениям, как так:
Надеюсь, что это помогает!
Вам нужно добавить ссылку на
System.Configuration
в папку references вашего проекта.Вы определенно должны использовать
ConfigurationManager
вместо устаревшегоConfigurationSettings
.Обновления для Framework 4.5 и 4.6; следующее не будет работать:
Теперь доступ к параметрам класса через свойства:
См. [Настройки Приложения](https://msdn.microsoft.com/en-us/library/a65txexh(в=против 120).aspx) для получения дополнительной информации.
Щелкните правой кнопкой мыши на библиотеке класса, выберите в меню опцию "Добавить ссылки" и, наконец, на вкладке .NET выберите System.Configuration. Это включит dll System.Configuration в ваш проект.
Я'м через это, и это работает хорошо для меня:
Читать Из Конфига :
Вы'll необходимо добавить ссылку на конфиг
строковое значение = "свойства".Параметры.По умолчанию.имя_параметра;
Сохранить в конфиг :
Вы должны добавить в проект ссылку на сборку System.Configuration.
Вы могли бы добавить приложение.конфигурационный файл для библиотеки DLL. Приложение.Config работает только для исполняемых проектов, так как все ДЛЛ взять настройки из конфигурационного файла для EXE-файл выполняется.
Позвольте'ы сказать, у вас есть два проекта решения:
Ваша проблема может быть связанным с тем, что вы'вновь включая приложения.config для SomeDLL и не SomeExe. SomeDll умеет читать настройки из проекта SomeExe.
Попробуйте это:
В интернете.config должен быть следующей структуры:
У меня была такая же проблема, просто читать их таким образом:
веб.конфиг используется с веб-приложений. веб.конфиг по умолчанию имеет несколько конфигураций, необходимых для веб-приложения. Вы можете в интернете.конфиг для каждой вложенной папки в веб-приложения.
приложение.конфиг используется для приложений Windows. При построении приложения в vs.net он будет автоматически переименован в
<имя_приложения>.ехе.config и этот файл должен быть доставлен вместе с вашим приложением.Вы можете использовать тот же метод, чтобы вызвать значения настроек приложения из обоих конфигурационных файлах :
Как я нашел лучший подход, чтобы получить доступ к переменным настройки приложения в систематический способ сделать класс обертку над системой.Конфигурации, как показано ниже
Теперь мы можем получить необходимые переменные параметры жестко заданы имена с помощью другого класса, как показано ниже
Кроме того, вы можете использовать Формо:
Конфиг:
Код:
Я настоятельно рекомендую вам создать оболочку для этого вызова. Что-то вроде
ConfigurationReaderService
и использовать инъекцию зависимостей, чтобы получить этот класс. Таким образом, Вы сможете выделить это конфигурационные файлы для тестирования.Чтобы использовать диспетчер конфигураций.Параметр appsettings [на"нечто" и]; - предложил и возвращать это значение. Вы можете С это способ создать какой-то возврат по умолчанию, если нет ключа доступен на .файл config.
Просто для полноты картины, там'с другой вариант, доступный для веб-проектов только:
Преимущество этого заключается в том, что он не'т требуют дополнительной ссылкой Так добавил, Может быть предпочтительнее для некоторых людей.
Я всегда создаю интерфейс IConfig с типизированного свойства, объявленные для всех значений конфигурации. Затем в класс реализации конфиг фантики вызовы системы.Конфигурации. Все ваши системы.Настройки звонки теперь в одном месте, так гораздо проще и чище, чтобы поддерживать и отслеживать, какие поля используются и объявить их значения по умолчанию. Я пишу набор частных вспомогательные методы для чтения и анализа основных типов данных.
С помощью системы МОК вы можете получить доступ к IConfig поля в любом месте в приложении, просто проходя интерфейс конструктора класса. Вы're также может создать макет реализации интерфейса IConfig в ваш юнит-тесты, так что теперь вы можете проверить различные значения конфигурации и комбинации значений без необходимости прикасаться к вашему приложению.config или web.файл config.
Шаг 1: Щелкните правой кнопкой мыши на вкладку Ссылки добавить ссылку.
Шаг 2: нажать на вкладку сборки
Шаг 3: поиск 'системы.Конфигурация'
Шаг 4: Нажмите кнопку ОК.
Тогда он будет работать
Я пытался найти решение этой же проблемы на пару дней. Я смог решить это путем добавления ключа в теге параметр appsettings в web.конфиг. Это должно переопределить .DLL при использовании помощника.
вы можете использовать ниже линии, в моем случае это работает:
вы должны заботиться, что выше строка кода тоже старая версия и устарела в новых библиотек.
Другим возможным решением: