Эквивалент «app.config» для библиотеки (DLL) - PullRequest
138 голосов
/ 04 марта 2011

Есть ли эквивалент app.config для библиотек (DLL)? Если нет, то как проще всего сохранить параметры конфигурации, характерные для библиотеки? Учтите, что библиотека может использоваться в разных приложениях.

Ответы [ 14 ]

1 голос
/ 04 марта 2011

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

Если ваша сборка используется несколькими приложениями, то каждому из этих приложений потребуетсяесть эти записи в их файле app.config.

Я бы порекомендовал вам определить свойства классов в вашей сборке для этих значений, например

private string ExternalServicesUrl
{
  get
  {
    string externalServiceUrl = ConfigurationManager.AppSettings["ExternalServicesUrl"];
    if (String.IsNullOrEmpty(externalServiceUrl))
      throw new MissingConfigFileAppSettings("The Config file is missing the appSettings entry for: ExternalServicesUrl");
    return externalServiceUrl;
  }
}

Здесь свойство ExternalServicesUrlполучить его значение из файла конфигурации приложения.Если в каком-либо приложении, использующем эту сборку, отсутствует этот параметр в файле конфигурации, вы получите исключение, o ясно, что что-то пропало.

MissingConfigFileAppSettings - это пользовательское исключение.Возможно, вы захотите выдать другое исключение.

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

0 голосов
/ 17 июля 2018

использование из конфигураций должно быть очень очень простым, как это:

var config = new MiniConfig("setting.conf");

config.AddOrUpdate("port", "1580");

if (config.TryGet("port", out int port)) // if config exist
{
    Console.Write(port);
}

для более подробной информации см. MiniConfig

0 голосов
/ 16 мая 2018

Почему бы не использовать:

  • [ProjectNamespace].Properties.Settings.Default.[KeyProperty] для C #
  • My.Settings.[KeyProperty] для VB.NET

Вам просто нужно обновить визуальноэти свойства во время разработки через:

[Solution Project]->Properties->Settings

0 голосов
/ 04 марта 2011

Насколько я знаю, вы должны скопировать + вставить нужные разделы из библиотеки .config в файл .config приложений.Вы получаете только 1 app.config на исполняемый экземпляр.

...