#如果忽略DEBUG (VB.net或c#)
本文关键字:net VB 如果 DEBUG | 更新日期: 2023-09-27 18:04:09
我的代码中有几个这样的代码到目前为止运行良好:
#If DEBUG Then
... some code here
#End If
现在,我注意到,最近,代码中的"#If DEBUG Then…"#如果"在"释放模式"下执行。
这很奇怪,以前从未发生过。会发生什么事呢#If DEBUG现在被忽略了(它们在IDE的调试或最终可执行文件中都被忽略了)?
我已经应用了Clean, Rebuild等:没有运气。谢谢你的提示和帮助。
pam
首先,确保您理解如何运行代码和如何构建代码之间的区别。太多人将"在调试器中启动"等同于"调试版本",将"不在调试器中启动"等同于"发布版本"。它们是完全正交的——你可以在调试器中启动发布构建(通常可用信息较少),也可以在调试器中启动调试构建。如果你已经意识到这一点,我向你道歉。
现在,假设您真的已经更改了您正在构建到Release的项目配置,您需要检查该特定配置的项目属性。我不知道它在VB中是什么样子,但在c#的项目属性中,在构建选项卡中,将有一个定义符号列表- 是影响#if DEBUG
代码是否构建的因素。也许有人已经将项目配置从调试复制到发布?编辑:在构建时检查这个的一种方法是:
#if DEBUG
#error This shouldn't happen
#endif
在发布版本中,应该构建时没有错误。在调试中,它不会。
编辑:另一个选项是您的整体解决方案配置现在引用了错误的项目配置类型。我不记得确切的菜单名称了,但是如果你在项目中寻找配置管理器,你应该能够打开一个网格映射"项目"answers"解决方案配置"到要构建的项目配置。
c# Project (Visual Studio)
- 转到:项目属性->构建(选项卡)
- 选择配置:释放
-
取消"定义调试常数"
-
现在选择Configuration: Debug
检查 "定义调试常数"
在你的代码中,你现在可以输入以下命令(DEBUG用大写)
#IF DEBUG // Debugging code goes here #ENDIF
在项目属性/编译/高级编译选项下有一个名为"定义调试常数"的复选框,用于设置此参数。
查看:http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_24658238.html
编辑:尝试用this初始化:
#If CONFIG = "Debug" Then
#CONST DEBUG = true
#if CONFIG = "Release" Then
#CONST DEBUG = false
您是否在项目属性/构建中为发布配置勾选了"Define DEBUG constant" ?
还要确保您没有在解决方案级发布配置中构建项目级调试配置(请参阅配置管理器)。
有一个类似的问题,"DEBUG"从来不为真。尝试取消选中并选中"定义DEBUG常量"复选框并每次重新构建,但这不起作用。
我的解决方案是在调试配置的"条件编译符号"文本框中手动定义"DEBUG"。重建时,Visual Studio 2019自动从文本框中删除DEBUG符号(因为这确实不应该在那里),从那时起,它再次工作。当我从调试切换到发布时,正确的行变灰了。这似乎是VS 2019(16.4.5)中的一个可能的错误?
还要记住#if DEBUG
必须是大写的。例:#if debug
行不通
undefine
DEBUG将不执行该部分
如果您使用的是ASP。NET中请确保这一行。配置文件:
<compilation debug="false" targetFramework="4.5">
所以如果debug="true"你的项目运行在debug模式
如果使用的是VB。NETFramework v4.5然后使用like
If Debugger.IsAttached Then
'... some code here
End If