Общая конфигурация между .exe и .dll - PullRequest
5 голосов
/ 07 сентября 2011

Я пытаюсь работать с файлом settings.settings в моем проекте.Существуют значения, которые необходимо разделить между файлом .exe и различными библиотеками DLL.Я предпочел бы не просто передавать эти значения, я хотел бы получить к ним доступ, когда они мне нужны, но каждый проект устанавливает свои значения с немного разными именами и, следовательно, недоступен другим проектам.

Есть ли способ поделиться содержимым файла app.config между .exe и .dll с помощью подхода settings.settings?Или мне нужно вернуться к использованию ConfigurationManager, чтобы сделать это?

1 Ответ

5 голосов
/ 07 сентября 2011

Просто поместите ваши настройки в файл App.config и прочитайте их из вашей dll.На самом деле я считаю, что это единственное место, где ваша dll будет искать настройки / конфигурации, локальная конфигурация для dll игнорируется.

Вот краткий пример того, что dll не имеет сильных ссылок на приложение.Этот код не очень хорош, но вы поняли.

  private string GetSettingValue(string key)
  {
     string executingAssembly = Assembly.GetEntryAssembly().GetName().Name;
     string sectionName = "applicationSettings/" + executingAssembly 
                                                 + ".Properties.Settings";
     ClientSettingsSection section =
            (ClientSettingsSection)ConfigurationManager.GetSection(sectionName);

     // add null checking etc
     SettingElement setting = section.Settings.Get(key); 
     return setting.Value.ValueXml.InnerText;
  }

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

...