[英]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.