我有一个奇怪的问题
#if (!DEBUG)
checkLicense();
#endif
Release
这在和Debug
配置中都可以正常工作。但是当我尝试使用发布配置发布时,这个条件不会执行。看起来发布正在使用调试 dll。
我错过了什么?
我有一个奇怪的问题
#if (!DEBUG)
checkLicense();
#endif
Release
这在和Debug
配置中都可以正常工作。但是当我尝试使用发布配置发布时,这个条件不会执行。看起来发布正在使用调试 dll。
我错过了什么?
有一个设置来控制是否根据不同的部署模式为每个项目定义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 DEBUG
....
#else
.....
替代我的其他答案,因为我刚刚注意到 mvc 标签,而在我假设您使用的是 WebForms 之前。
您是否偶然在视图中提供了代码片段?
因为如果是这种情况,那么在运行时生成视图时,项目的 DEBUG 设置将不会受到尊重 - 它只会尊重 web.config 文件中的调试标志。