Я работаю над библиотекой классов C #, которая должна иметь возможность считывать настройки из файла web.config
или app.config
(в зависимости от того, есть ли ссылка на DLL из веб-приложения ASP.NET или приложения Windows Forms).
Я нашел это
ConfigurationSettings.AppSettings.Get("MySetting")
работает, но этот код был помечен как устаревший Microsoft.
Я прочитал, что я должен использовать:
ConfigurationManager.AppSettings["MySetting"]
Тем не менее, System.Configuration.ConfigurationManager
кажется , что класс не доступен из проекта библиотеки классов C #.
Каков наилучший способ сделать это?
c#
.net
configuration
appsettings
Расс Кларк
источник
источник
Ответы:
Вам нужно добавить ссылку на
System.Configuration
в вашем проекте папки ссылки .Вы должны определенно использовать
ConfigurationManager
устаревшиеConfigurationSettings
.источник
Для примера файла app.config, как показано ниже:
Вы прочитали вышеуказанные настройки приложения, используя код, показанный ниже:
Вам также может понадобиться добавить ссылку на
System.Configuration
ваш проект, если ее еще нет. Затем вы можете получить доступ к значениям следующим образом:источник
Обновление для .NET Framework 4.5 и 4.6; следующее больше не будет работать:
Теперь перейдите к классу Setting через Свойства:
См. Управление настройками приложения для получения дополнительной информации.
источник
Щелкните правой кнопкой мыши на своей библиотеке классов и выберите в меню пункт «Добавить ссылки».
И на вкладке .NET выберите System.Configuration. Это будет включать файл DLL System.Configuration в ваш проект.
источник
ConfigurationManager.ConnectionStrings[0].ConnectionString
Я использую это, и это хорошо работает для меня:
источник
Читать из конфигурации:
Вам нужно будет добавить ссылку на конфигурацию:
Получить значение с помощью следующего кода:
Сохранить в конфигурации:
источник
Вы должны добавить ссылку на сборку System.Configuration в проект.
источник
Возможно, вы добавляете файл App.config в файл DLL. App.Config работает только для исполняемых проектов, так как все файлы DLL берут конфигурацию из файла конфигурации для исполняемого файла EXE.
Допустим, у вас есть два проекта в вашем решении:
Ваша проблема может быть связана с тем, что вы включаете файл app.config в SomeDLL, а не SomeExe. SomeDll может читать конфигурацию из проекта SomeExe.
источник
Попробуй это:
В файле web.config это должно быть следующей структурой:
источник
У меня такая же проблема. Просто прочитайте их следующим образом: System.Configuration.ConfigurationSettings.AppSettings ["MySetting"]
источник
This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings
web.config
используется с веб-приложениями.web.config
по умолчанию имеет несколько конфигураций, необходимых для веб-приложения. Вы можете иметьweb.config
для каждой папки в вашем веб-приложении.app.config
используется для приложений Windows. Когда вы создаете приложение в Visual Studio, оно будет автоматически переименовано,<appname>.exe.config
и этот файл должен быть доставлен вместе с вашим приложением.Вы можете использовать один и тот же метод для вызова
app settings
значений из обоих файлов конфигурации: System.Configuration.ConfigurationSettings.AppSettings ["Key"]источник
System.Configuration.COnfigurationSettings.AppSettings.Get("Key")
вместо использования квадратных скобок.Как я обнаружил, лучший подход для систематического доступа к переменным настроек приложения - создать класс-оболочку над System.Configuration, как показано ниже.
Теперь мы можем получить доступ к необходимым переменным настроек по жестко закодированным именам, используя другой класс, как показано ниже:
источник
Я настоятельно рекомендую вам создать обертку для этого звонка. Что-то вроде
ConfigurationReaderService
и использовать инъекцию зависимостей, чтобы получить этот класс. Таким образом, вы сможете изолировать эти файлы конфигурации для целей тестирования.Так что используйте
ConfigurationManager.AppSettings["something"];
предложенное и верните это значение. С помощью этого метода вы можете создать какой-нибудь возврат по умолчанию, если в файле .config нет ключа.источник
app.DEBUG.config
,app.RELEASE.config
иapp.TEST.config
т.д.Также вы можете использовать Formo :
Конфигурация:
Код:
источник
Просто для полноты, есть еще один вариант, доступный только для веб-проектов: System.Web.Configuration.WebConfigurationManager.AppSettings ["MySetting"]
Преимущество этого в том, что он не требует добавления дополнительной ссылки, поэтому он может быть предпочтительным для некоторых людей.
источник
Шаг 1: Щелкните правой кнопкой мыши на вкладке ссылок, чтобы добавить ссылку.
Шаг 2: Нажмите на вкладку Сборки
Шаг 3: Поиск «System.Configuration»
Шаг 4: Нажмите ОК.
Тогда это будет работать.
источник
Я всегда создаю интерфейс IConfig с типобезопасными свойствами, объявленными для всех значений конфигурации. Затем класс реализации Config оборачивает вызовы System.Configuration. Все ваши вызовы System.Configuration теперь находятся в одном месте, и намного проще и понятнее поддерживать и отслеживать, какие поля используются, и объявлять их значения по умолчанию. Я пишу набор частных вспомогательных методов для чтения и анализа общих типов данных.
Используя платформу IoC, вы можете получить доступ к полям IConfig в любом месте вашего приложения, просто передав интерфейс в конструктор класса. После этого вы также сможете создавать имитационные реализации интерфейса IConfig в своих модульных тестах, чтобы теперь вы могли тестировать различные значения конфигурации и комбинации значений без необходимости прикасаться к файлу App.config или Web.config.
источник
Другое возможное решение:
источник
Я пытался найти решение этой проблемы уже пару дней. Я смог решить эту проблему, добавив ключ в тег appsettings в файле web.config . Это должно переопределить файл .dll при использовании помощника.
источник
Вы можете использовать ниже строку. В моем случае это работало: System.Configuration.ConfigurationSettings.AppSettings ["yourKeyName"]
Вы должны позаботиться о том, чтобы приведенная выше строка кода также была старой версией, и она устарела в новых библиотеках.
источник
ConfigurationManager - это не то, что вам нужно для доступа к вашим собственным настройкам.
Для этого вы должны использовать
{YourAppName}.Properties.Settings.{settingName}
источник
Мне удалось заставить следующий подход работать на .NET Core проектах:
шаги:
Я создал метод Login (), чтобы показать использование класса конфигурации.
Создайте appsettings.json в своем проекте с контентом:
источник
Если вы нуждаетесь / хотите использовать
ConfigurationManager
класс ...Вам может потребоваться загрузка
System.Configuration.ConfigurationManager
через Microsoft через диспетчер пакетов NuGetДокументы Microsoft
Из документов следует отметить одну вещь ...
источник
Пожалуйста, проверьте версию .NET, над которой вы работаете. Оно должно быть больше 4. И вам нужно добавить системную библиотеку System.Configuration в ваше приложение.
источник
Вот пример:
App.config
источник