在代码中在Release和Debug之间切换

时间:2013-06-10 14:26:56

标签: c# visual-studio debugging release

我发布了我的应用程序,并希望为其添加额外的“管理”功能。 我看到了很多调试信息,当我在调试模式下运行我的应用程序时,所有这些都在发布模式中被删除,以便有一个更清晰的应用程序。

现在,如果我登录到我的应用程序,我想检查登录名和密码,例如当我使用“Admin”,“Password”登录时,我也希望看到调试信息。

问题:

是否可以在代码中从Release切换到Debug?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:1)

这取决于您如何在调试模式下呈现其他信息。如果你把它括在" #ifdef DEBUG"代码不是在发布版本中编译的,因此它不在dll中,因此无法执行。

要将调试信息放入发布版本中,基本上必须替换

#if DEBUG
    OutputSomeDebugInfo();
#endif 

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

其中" GlobalFlags"是一个静态公共类,你必须使用静态bool成员或属性创建" IsDebugMode"当您使用管理员登录或进行调试构建时,它将仅设置为true。

日志记录和跟踪工具(如log4net或企业库)旨在为您提供对应用程序中记录内容的精细,可配置控制,因此您可能也想查看这些内容。