在代码的发布和调试之间切换

本文关键字:调试 之间 代码 | 更新日期: 2023-09-27 18:17:38

我发布了我的应用程序,我想为它添加额外的"Admin"功能。我看到很多调试信息,当我在调试模式下运行我的应用程序时,所有这些都在发布模式下被删除,以便有一个更清晰的应用程序。

现在,如果我登录到我的应用程序,我想检查登录名和密码,所以,例如,当我登录"Admin","password",我想看到调试信息以及。

问题:

在代码中可以从发布切换到调试吗?

在代码的发布和调试之间切换

简短的回答是否定的,因为编译器为调试和发布版本生成不同的程序集。如果开发人员添加了编译时条件代码,例如

,则可能会丢失一些代码。
#if DEBUG
    DisableSharingWithPrism();
#endif

只会在调试代码中运行编译代码。在发布模式下,代码将不存在。

为了解决这个问题,编写一个方法来计算用户是否是管理员,并用该方法查找和替换#if DEBUG调用,例如:

if (UserIsAdmin())
{
    DisableSharingWithPrism();
}

这取决于在调试模式下如何呈现附加信息。如果你把它包含在"#ifdef DEBUG"中,代码不会在发布版本中编译,所以因为它不在dll中,所以它不能被执行。

要在发布版本中获取调试信息,基本上你必须替换

#if DEBUG
    OutputSomeDebugInfo();
#endif 

if (GlobalFlags.IsDebugMode)
{
    OutputSomeDebugInfo();
}

其中"GlobalFlags"是一个静态公共类,你必须创建一个静态bool成员或属性"IsDebugMode",只有当你使用admin登录或当你做调试构建时才会设置为true。

日志和跟踪工具,如log4net或来自企业库的工具,旨在为您提供细粒度的、可配置的控制,以控制您的应用程序中记录的内容,因此您可能也想检查这些。