Настройки приложения для нескольких библиотек C # в Mono (Linux) - PullRequest
3 голосов
/ 21 февраля 2012

У меня есть проект, переносимый для работы в Linux под Mono.Проект включает в себя несколько библиотек C #, которые имеют собственные пользовательские параметры приложения (создаются автоматически через VS2008).В конце проект будет работать на .NET в Windows и Mono в Ubuntu 10.04.

При работе в Windows параметры приложения хранятся в одном файле user.config с отдельными разделами конфигурации для каждой библиотеки:

<configuration>
  <configSections>
    <sectionGroup name="userSettings" type="UserSettingsGroup ...>
      <section name="LibFoo.Properties.Settings" type="ClientSettingsSection ... />
      <section name="LibBar.Properties.Settings" type="ClientSettingsSection ... />
    </sectionGroup>
  </configSections>
  <userSettings>
    <LibFoo.Properties.Settings>
      <setting name="strFoo" serializeAs="String">
        <value>An example string value.</value>
      </setting>
    </LibFoo.Properties.Settings>
    <LibBar.Properties.Settings>
      <setting name="strBar" serializeAs="String">
        <value>An example string value.</value>
      </setting>
    </LibBar.Properties.Settings>
  </userSettings>
</configuration>

В Ubuntu создается один файл user.config, однако я обнаружил, что создается только один раздел для той библиотеки, которая сначала вызывает Properties.Settings.Save (), и все библиотеки используют этот же раздел:

<configuration>
  <configSections>
    <sectionGroup name="userSettings" type="UserSettingsGroup ... >
      <section name="LibFoo.Properties.Settings" type="ClientSettingsSection ... />
    </sectionGroup>
  </configSections>
  <userSettings>
    <LibFoo.Properties.Settings>
      <setting name="strFoo" serializeAs="String">
        <value>An example string value.</value>
      </setting>
      <setting name="strBar" serializeAs="String">
        <value>An example string value.</value>
      </setting>
    </LibFoo.Properties.Settings>
  </userSettings>
</configuration>

Это особенно беспокоит, когда настройки в библиотеках имеют одно и то же имя.

Это ошибка в Mono, или мне нужно что-то изменить, чтобы Mono генерировал отдельные разделы для настроек моей библиотеки?

  • Ubuntu v10.04
  • mono-runtime v2.10.8
  • Visual Studio 2008 Professional

1 Ответ

0 голосов
/ 23 марта 2012

Чтобы избежать одной и той же проблемы с именем конфигурации, вы можете попытаться поместить параметры конфигурации в файл конфигурации для каждой библиотеки DLL. Ваш конфигурационный файл должен иметь имя «MyDLL.dll.config» (при условии, что ваша DLL называется «MyDLL.dll») и находиться в той же папке, что и DLL.

(никогда не тестировался в моно)

Для записи в конфигурационные файлы dll:

Вы можете создать метод расширения «Сохранить», и в этом методе использовать отражение для получения имени сборки (вызывающая сборка, а не текущая сборка), а затем использовать SaveAs для сохранения конфигурации. Таким образом, у вас есть способ сохранить в файлах конфигурации dll.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...