Mono(Linux)中多个C#库的应用程序设置
本文关键字:应用程序 设置 Linux Mono | 更新日期: 2023-09-27 18:25:32
我有一个项目正在移植到Mono下的Linux上。该项目包括多个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
- mono运行时v2.10.8
- Visual Studio 2008专业版
为了避免相同的配置名称问题,可以尝试将配置设置放在每个DLL的配置文件中。您的配置文件需要名称为"MyDLL.dll.config"(假设您的dll名为"MyDLL.dll"),并且与dll位于同一文件夹中。
(从未在单声道下测试)
写入dll的配置文件:
您可以将Extension方法设置为"Save",并在此方法中使用反射来检索程序集名称(调用程序集,而不是当前程序集),然后使用SaveAs来保存配置。这样你就有了一个保存在dll配置文件中的方法。