我希望有一个解决我的应用程序设置问题的方法。每次升级此应用程序(WPF 桌面应用程序)时,我都希望保留我的用户设置。为了实现这一点,我在我的Application_Startup
活动中使用以下代码;
If My.Settings.CallUpgrade = True Then
My.Settings.Upgrade()
My.Settings.CallUpgrade = False
My.Settings.Save()
End If
这完美地工作并将用户设置持久化到新版本中,并导致用户设置持久化到目录结构中,如下所示;
C:\Users\Aaron\AppData\Local\Assistant\Assistant.exe_Url_1rohxsl103zsiltndvz23vqujpaafv4w
..\1.0.0.0
..\1.0.2.0
但是,我的问题是程序集的基本文件夹不同,具体取决于使用的构建配置。即:如果构建配置是“DEBUG”,那么用于保存用户设置的目录如下;
调试模式
C:\Users\Aaron\AppData\Local\Assistant\Assistant.exe_Url_1rohxsl103zsiltndvz23vqujpaafv4w
在释放模式下,如下所示;
释放模式
C:\Users\Aaron\AppData\Local\AssistantAssistant.exe_Url_od13shq40yxnxmu3xwepbkqf1bjqc34j
完全不同的目录。版本 1.0.0.0 被搁置在 DEBUG 文件夹中,而版本 1.0.2.0 被放置在 Release 文件夹中。自然; My.Settings.Upgrade()
由于它们位于不同的文件夹中,因此呼叫未找到任何要升级的先前设置。
根据建筑配置,应用程序本质上被认为是两个不同的程序集。
我可以理解什么时候这可能是可取的,但是我有一种情况,我想分发“调试”版本,以便我可以附加到远程运行的进程等。在某个时间点之后,我希望分发“发布”版本的应用程序。
然而,问题是两个版本的用户设置并不通用,并且本质上会导致用户设置丢失。
是否有任何解决方案可以统一跨程序集的构建配置/版本的用户设置的持久性和检索,而无需使用我自己的应用程序设置功能版本?