Получение настроек конфигурации из web.config/app.config с использованием библиотеки классов

Настройки конфигурации в 3.5 меня заставляют орехи... Помогите!;)

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

Я хочу определить эти параметры в моих приложениях Windows Forms/Web Projects App.Config или Web.Config, как и другие настройки.

Вот часть моего app.config для моего приложения форм Windows:

<applicationSettings>
    <PhotoImportRobot.My.MySettings>
      <setting name="ADIImageRoot" serializeAs="String">
        <value>C:\DataTemp\ADI\Original\</value>
      </setting>
      <setting name="ADIImageVariantsRoot" serializeAs="String">
        <value>C:\DataTemp\ADI\Variants\</value>
      </setting>
    </PhotoImportRobot.My.MySettings>
</applicationSettings>

Как мне получить доступ к этой библиотеке классов?

Я пробовал это:

System.Configuration.ConfigurationManager.AppSettings("ADIImageVariantsRoot")

Что делать?

Ответы

Ответ 1

Если вы не после структурированных настроек, раздел appSettings просто принимает пары ключ-значение:

<appSettings>
  <add key="ADIImageRoot" value="C:\DataTemp\ADI\Original\" />
  <add key="ADIImageVariantsRoot" value="C:\DataTemp\ADI\Variants\" />
</appSettings>

Это позволит вам получить доступ к ним через словарь AppSettings:

ConfigurationManager.AppSettings["ADIImageVariantsRoot"]

Как и следовало ожидать.

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

Ответ 2

Кажется, вы используете материал настроек, встроенный в визуальную студию. Это создает класс оболочки, связанный с файлом, который вызывается в вашем случае MySettings.

Таким образом вы можете написать что-то вроде MySettings.Instance.ADIImageVariantsRoot. (Если вы нажмете показать все файлы в панели инструментов проекта, он покажет вам файл .settings.cs, и вы сможете увидеть все детали gory)

Ответ 3

Добавить ссылку System.web; добавить пространство имен и пользователя

using System.Web.Configuration;    

String webConfigValue;
            webConfigValue = WebConfigurationManager.AppSettings["employeeDB"].ToString();

чтобы прочитать значение веб-конфигурации

<appSettings>
        <add key="employeeDB" value="Data Source=servername;Initial Catalog=employee;Persist Security Info=True;User ID=userid;Password=password;"/>        
</appSettings>

Ответ 4

Для ApplicationSettings вы должны использовать:

[YourNamespace].Properties.Settings.Default.[YourSettingName]

Это обеспечивает строго типизированную ссылку на ваш параметр и возвращает значение по умолчанию, если оно не определено в файле web.config. Для AppSettings вы должны использовать:

System.Web.Configuration.WebConfigurationManager.AppSettings