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

Posted

技术标签:

【中文标题】.NET 用户设置 - DEBUG 和 RELEASE 模式不同【英文标题】:.NET User Settings - Different for DEBUG and RELEASE Modes 【发布时间】:2015-06-14 09:09:32 【问题描述】:

我希望有一个解决我的应用程序设置问题的方法。每次升级此应用程序(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

然而,我的问题是程序集的基本文件夹不同,具体取决于使用的构建配置。即:如果Build Configuration为“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() 找不到任何以前的设置进行升级,因为它们位于不同的文件夹中。

根据构建配置,应用程序本质上被认为是两个不同的程序集。

我可以理解什么时候这可能是可取的,但我有一种情况,我想分发“调试”版本,以便我可以附加到远程运行的进程等。在某个时间点之后,我希望分发“ RELEASE”版本的应用程序。

然而,问题是两个版本的用户设置并不通用,并且本质上会导致用户设置丢失。

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

【问题讨论】:

【参考方案1】:

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

哈希目录名受您的 EXE 的几个属性影响,其中之一是安装 EXE 的目录的名称。在您的机器上,您有不同的目录,bin\Debug 和 bin\Release。用户的机器只有一个,无论安装在哪里。

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

【讨论】:

非常感谢。一切都说得通。很好的解释

以上是关于.NET 用户设置 - DEBUG 和 RELEASE 模式不同的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core 3.0 发布 ARM64

.net 项目在Debug模式下打包跟在release模式下打包有啥区别?

eclipse 在jboss的debug配置(ubuntu系统)

ASP.NET:如何在 DEBUG 模式下编译?

VS调试出现:Debug Assertion Failed! Expression:_pFirstBlock==pHead; Expression:_acrt_first_block==header

.NET开发人员必看:提高ASP.NET Web应用性能的24种方法和技巧——转