c# - Mono (Linux) 中多个 C# 库的应用程序设置

标签 c# mono settings

我有一个项目被移植到 Linux 下的 Mono 下工作。该项目包括多个 C# 库,它们有自己的用户范围、应用程序设置(通过 VS2008 自动生成)。最终,该项目将在 Windows 中的 .NET 和 Ubuntu 10.04 中的 Mono 上运行。

在 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
  • 单声道运行时 v2.10.8
  • Visual Studio 2008 专业版

最佳答案

为避免配置名称相同的问题,您可以尝试将配置设置放在每个 DLL 的配置文件中。您的配置文件需要具有名称“MyDLL.dll.config”(假设您的 DLL 被命名为“MyDLL.dll”)并且与 DLL 位于同一文件夹中。

(从未在单声道下测试过)

在dll的配置文件中写入:

您可以创建一个扩展方法“Save”,并在该方法中使用反射来检索程序集名称(调用程序集,而不是当前程序集),然后使用 SaveAs 保存配置。这样你就有了一种保存在 dll 配置文件中的方法。

关于c# - Mono (Linux) 中多个 C# 库的应用程序设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9383120/

相关文章:

python - 如何使用不同的数据库设置(非默认设置)启动 Django 开发服务器

c# - 通过 UDP 连接在 C# 中读取此 C++ 编码数据

c# - Mono.Cecil 替换方法中的参数

ios - Mono Boehm vs SGen GC

facebook - 应用程序不允许 "Create Facebook Page"

android - 仅在用户启用时发送通知

c# - 遍历 StartDate 和 EndDate 之间的每一天

c# - 为什么检查 List<T>.Count <= 0?

c# - 控制台选择停止应用程序

linux - 可以在 Debian 7 Squeeze 上安装 Mono 3.x 吗?