[英]How can I share a common user config (settings.settings) from a common assembly without each app saving updates in their own folder?
我有一组要共享应用程序设置的应用程序。 我们称它们为App1,App2和App3
我在一个单独的命名空间中创建了一个公共项目,并处理了该项目中用户配置值的获取和设置。 我使用了该项目属性中的“设置”选项卡来创建用户设置值。
例如,在MyCommon
命名空间的静态Configuration
类中,我具有以下方法:
public static Config PopulateConfig()
{
// Config is a simple class containing values pulled from the user config
Config result = new Config();
try {
result.ImportArchiveFolder = MyCommon.Properties.Settings.Default.ArchiveFolder;
result.ReportFolder = MyCommon.Properties.Settings.Default.ReportFolder;
}
catch (Exception ex) {
MessageBox.Show("Error loading configuration: " + ex.Message,
"Configuration error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
return result;
}
public static void SaveConfig(Config config)
{
try {
if (config.ImportArchiveFolder != MyCommon.Properties.Settings.Default.ArchiveFolder) {
MyCommon.Properties.Settings.Default.ArchiveFolder = config.ImportArchiveFolder;
}
if (config.ReportArchiveFolder != MyCommon.Properties.Settings.Default. ReportFolder) {
MyCommon.Properties.Settings.Default.ReportFolder = config.ReportArchiveFolder;
}
MyCommon.Properties.Settings.Default.Save();
}
catch (Exception ex) {
MessageBox.Show("Error saving configuration: " + ex.Message,
"Configuration error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
虽然它能够读取和保存这些值,但MyCommon
在用户的AppData
结构中的单个exe名称下,例如App2
而不是MyCommon
。
Username\AppData\MyCompany\App1_Url_randomString\V1.0.1.0\user.config
Username\AppData\MyCompany\App2_Url_randomString\V1.0.1.0\user.config
如果尝试使用ConfigurationManager.OpenMappedExeConfiguration
打开固定副本,但遇到了绊脚石。
我想我想知道在哪里告诉它放置此共享的配置,我想看到它在AppData
文件夹中自动进行管理,但是我不知道如何指定反映共享程序集版本的“特殊文件夹” 。 我希望配置遵循共享项目。
文件结构应该是这样的
Username\AppData\MyCompany\MyCommon_Url_randomString\V1.0.1.0\user.config
关于ConfigurationManager
是,如果我更改程序集的版本,它将读取以前的值并使用这些值创建一个新文件夹,因此我可以在不考虑其配置的情况下运行程序的两个版本。 我希望在这种共享方案中保持这种状态。
Username\AppData\MyCompany\MyCommon_Url_randomString\V1.0.1.0\user.config
\V1.0.1.1\user.config
我最终将注册表和“设置”用作初始默认设置。
共享程序使用注册表进行设置。 程序启动时,它将查看公用注册表中是否有任何设置,如果有,它将使用这些设置。 如果没有,它将使用它自己的设置文件作为默认值。
使用选项编辑器,管理员可以编辑所有共享应用程序的选项,并将所有设置保存到公共注册表文件夹中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.