#If DEBUG被忽略(VB.net或C#)

Pam*_*Pam 13 c# vb.net

我的代码中有几个这样做到目前为止工作正常:

#If DEBUG Then    
   ... some code here       
#End If     
Run Code Online (Sandbox Code Playgroud)

现在,我注意到,最近,"#If DEBUG Then ... #End If"中的代码也在"Release Mode"中执行.

这很奇怪,之前没有发生过.可能发生了什么,以便#If DEBUG现在被忽略(它们在IDE或最终可执行文件的调试中被忽略)?

我申请了清洁,重建等:没有运气.感谢您的任何提示和帮助.

-PAM

Jon*_*eet 30

首先,确保您了解运行代码的方式与构建代码的方式之间的区别.太多人将"在调试器中启动"与"调试版本"和"不在调试器中启动"等同于"发布版本".它们完全正交 - 您可以在调试器中启动发布版本(通常可用的信息较少),您可以在调试器中启动调试版本.如果您已经意识到这一点,请道歉.

现在,假设您确实已将要构建的项目配置更改为Release,则需要检查该特定配置的项目属性.我不知道它在VB中的样子,但是在项目属性的C#中,在构建选项卡中,会有一个已定义符号的列表 - 会影响#if DEBUG代码是否构建.也许有人将项目配置从Debug复制到Release?

编辑:在构建时检查此问题的一种方法是:

#if DEBUG
#error This shouldn't happen
#endif
Run Code Online (Sandbox Code Playgroud)

在发布版本中,应该构建没有错误.在调试中,它不会.

编辑:另一种选择是您的整体解决方案配置现在指的是错误的项目配置类型.我不记得确切的菜单名称,但如果您查看Project for Configuration Manager,您应该能够将"项目"和"解决方案配置"的网格映射到项目配置中进行构建.


Gag*_*age 18

在Project Properties/Compile/Advanced Compile Options下,有一个名为"Define Debug Constant"的复选框来设置它.

查看:http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_24658238.html

编辑:尝试这个初始化:

#If CONFIG = "Debug" Then
#CONST DEBUG = true

#if CONFIG = "Release" Then
#CONST DEBUG = false
Run Code Online (Sandbox Code Playgroud)

  • 在Stack Overflow帖子中链接到Expert Exchange?! (20认同)
  • @Pam:"照常检查"?不应在Release版本中检查它. (2认同)

Vir*_*sen 14

C#项目(Visual Studio)

  1. 转至:项目属性 - >构建(选项卡)
  2. 选择配置:发布
  3. 取消选中 "定义DEBUG常量"

  4. 现在选择Configuration:Debug

  5. 选中 "定义DEBUG常量"

  6. 在您的代码中,您现在可以键入以下内容(DEBUG with uppercase)

#IF DEBUG

// Debugging code goes here

#ENDIF
Run Code Online (Sandbox Code Playgroud)


Bra*_*vic 5

在项目属性/构建中,您是否有机会勾选Release配置的"Define DEBUG constant"?

还要确保您没有在解决方案级别的Release配置中构建项目级调试配置(请参阅Configuration Manager).