DEBUG在发布时定义

本文关键字:定义 布时 DEBUG | 更新日期: 2023-09-27 18:02:35

我有一个奇怪的问题

#if (!DEBUG)
    checkLicense();
#endif

这在ReleaseDebug配置中都能正常工作。但是当我尝试使用释放配置发布时,此条件不会执行。看起来publish正在使用调试dll。

我错过了什么?

DEBUG在发布时定义

有一个设置来控制是否根据不同的部署模式为每个项目定义DEBUG常量。请查看此答案,以确保Define DEBUG constant复选框选中,以验证常量是为"发布模式"定义的。

如果未选中该框,则在编译网站之前,预处理器将删除调试代码,并且不会执行任何代码,即使您包含其他答案所建议的ELSE。

如果这不起作用,那么另一种可能性是您正在运行发布代码的机器可能具有部署元素的machine.config:

<deployment retail="true" />

此元素覆盖应用程序的web.config设置,并将机器上所有. net应用程序的调试标志设置为false。

所以如果可能的话,检查一下。虽然我认为我给你的第一个选项更有可能。

首先你必须确保你进入这个"if"并使用try'catch。

#if (!DEBUG)
MessageBox.Show("I'm in");
try{
    checkLicense();}
catch{MessageBox.Show("ERROR IN checkLicense");}
#endif

,然后取出一个版本并运行它。如果你在" If "中,你会知道它,如果你有一个异常,你也会知道它。

你也可以试试

#if DEBUG
....
#else
.....

替代我的另一个答案,因为我刚刚注意到mvc标签,而在我假设你使用WebForms之前。

您提供的代码片段是否碰巧在视图中?

因为如果是这样的话,那么当View在运行时生成时,项目的DEBUG设置将不会被尊重——它只会尊重web中的调试标志。配置文件。