我希望有一个解决我的应用程序设置问题的方法。每次我升级此应用程序(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放在版本文件夹中。自然;调用My.Settings.Upgrade()
找不到任何以前要升级的设置,因为它们位于不同的文件夹中。
根据建筑配置,应用程序基本上被认为是两个不同的组件。
我可以理解这可能是什么时候需要,但我有一个情况,我想分发一个“DEBUG”版本,以便我可以附加到一个远程运行过程等。在一个时间点后,我希望分发“发布“应用程序的版本。
然而问题是两个版本的用户设置并不常见,实际上会导致用户设置丢失。
是否有任何解决方案可以跨程序集的构建配置/版本统一用户设置的持久性和检索,而无需使用我自己的应用程序设置版本功能?
答案 0 :(得分:3)
不,这不是一个真正的问题。它只发生在您的机器上,而不是用户的机器上。
散列目录名受EXE的多个属性的影响,其中一个属性是安装EXE的目录的名称。在您的计算机上,您有不同的目录,bin \ Debug和bin \ Release。用户的机器只有一个,无论何时安装程序。
您可以更改项目设置,使它们相同。项目+属性,构建选项卡,输出路径设置。对Debug配置执行此操作,将其更改为bin \ Release。足够好用于测试和验证它是否有效,你可能想在感觉良好后改回它:)