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

时间:2011-08-02 12:44:44

标签: c# vb.net

我的代码中有几个在目前为止工作正常:

#If DEBUG Then    
   ... some code here       
#End If     

现在,我注意到,最近,“#If DEBUG然后...... #End If”中的代码 在“发布模式”中也可以执行。

这很奇怪,之前没发生过。怎么可能发生这样的事情 #If DEBUG现在被忽略(它们在IDE或最终可执行文件的调试中被忽略)?

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

-PAM

8 个答案:

答案 0 :(得分:29)

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

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

编辑:在 build 时间检查此内容的一种方法是:

#if DEBUG

在发布版本中,应该构建而不会出错。在调试中,它不会。

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

答案 1 :(得分:17)

  

在项目属性/编译/高级编译选项下有   一个名为“定义调试常量”的复选框,用于设置此项。

退房: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

答案 2 :(得分:12)

C#Project(Visual Studio)

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

  4. 现在选择配置:调试

  5. 检查"定义DEBUG常数"

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

  7. #IF DEBUG
    
    // Debugging code goes here
    
    #ENDIF
    

答案 3 :(得分:5)

当您在项目属性/构建中时,您是否有机会勾选发布配置的“定义DEBUG常量”?

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

答案 4 :(得分:0)

undefine DEBUG ,并且不会执行该部分。

答案 5 :(得分:0)

另外请记住#if DEBUG必须是大写的。例如#if debug无效。

答案 6 :(得分:0)

如果您使用的是ASP.NET,请确保Web.Config文件中的这一行:

<compilation debug="false" targetFramework="4.5">

所以如果debug =&#34; true&#34;您的项目以DEBUG模式运行。

答案 7 :(得分:0)

有一个类似的问题,其中“ DEBUG”从不成立。尝试通过取消选中“定义DEBUG常量”复选框并每次重新构建来进行尝试,但这不起作用。

我的解决方案是在调试配置的“条件编译符号”文本框中为手动定义“ DEBUG” 。重建时, Visual Studio 2019自动从文本框中删除DEBUG符号(因为确实不应该存在),然后它再次起作用。当我从Debug切换到Release时,正确的行显示为灰色。 这似乎是VS 2019(16.4.5)中的可能错误?