.NET用户设置 - DEBUG和RELEASE模式不同

时间:2015-04-09 06:14:38

标签: c# .net vb.net my.settings settings

我希望有一个解决我的应用程序设置问题的方法。每次我升级此应用程序(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”版本,以便我可以附加到一个远程运行过程等。在一个时间点后,我希望分发“发布“应用程序的版本。

然而问题是两个版本的用户设置并不常见,实际上会导致用户设置丢失。

是否有任何解决方案可以跨程序集的构建配置/版本统一用户设置的持久性和检索,而无需使用我自己的应用程序设置版本功能?

1 个答案:

答案 0 :(得分:3)

不,这不是一个真正的问题。它只发生在您的机器上,而不是用户的机器上。

散列目录名受EXE的多个属性的影响,其中一个属性是安装EXE的目录的名称。在您的计算机上,您有不同的目录,bin \ Debug和bin \ Release。用户的机器只有一个,无论何时安装程序。

您可以更改项目设置,使它们相同。项目+属性,构建选项卡,输出路径设置。对Debug配置执行此操作,将其更改为bin \ Release。足够好用于测试和验证它是否有效,你可能想在感觉良好后改回它:)