#如果忽略调试(VB.net或C#)
到目前为止,我的代码中有几项工作正常:#如果忽略调试(VB.net或C#),c#,vb.net,C#,Vb.net,到目前为止,我的代码中有几项工作正常: #If DEBUG Then ... some code here #End If 现在,我注意到,最近,“#If DEBUG Then…#End If”中的代码 在“释放模式”下也获取执行 这很奇怪,以前从未发生过。发生了什么事,所以 #If DEBUG现在被忽略(它们在IDE的DEBUG或最终可执行文件中都被忽略) 我申请了清洁、重建等:没有运气。谢谢你的提示和帮助 -帕姆 在项目属性/编译/高级编译选项下 一个
#If DEBUG Then
... some code here
#End If
现在,我注意到,最近,“#If DEBUG Then…#End If”中的代码
在“释放模式”下也获取执行
这很奇怪,以前从未发生过。发生了什么事,所以
#If DEBUG现在被忽略(它们在IDE的DEBUG或最终可执行文件中都被忽略)
我申请了清洁、重建等:没有运气。谢谢你的提示和帮助
-帕姆
在项目属性/编译/高级编译选项下
一个名为“Define Debug Constant”的复选框设置了此选项
退房:
编辑:使用以下命令尝试此操作:
#If CONFIG = "Debug" Then
#CONST DEBUG = true
#if CONFIG = "Release" Then
#CONST DEBUG = false
取消定义
调试,这将不会执行该部分。首先,确保您了解如何运行代码和如何构建代码之间的区别。太多人将“在调试器中启动”等同于“调试版本”,将“不在调试器中启动”等同于“发布版本”。它们是完全正交的-您可以在调试器中启动发布版本(通常可用信息较少),也可以不在调试器中启动调试版本。如果您已经意识到这一点,请道歉
现在,假设您确实已将正在构建的项目配置更改为发行版,则需要检查该特定配置的项目属性。我不知道它在VB中是什么样子,但在C中,在“项目属性”的“构建”选项卡中,会有一个已定义符号的列表-这会影响是否构建调试代码。也许有人将项目配置从调试复制到了发布版
编辑:在生成时检查此项的一种方法是:
在发布版本中,应该无错误地生成。在调试中,它不会
编辑:另一个选项是,您的总体解决方案配置现在引用了错误的项目配置类型。我记不起确切的菜单名,但如果您在Project中查找Configuration Manager,您应该能够将“Project”和“Solution Configuration”网格映射到要构建的项目配置。您是否有可能在发布配置中勾选“Define DEBUG constant”,当您在项目属性/构建中时 还要确保您没有在解决方案级发布配置中构建项目级调试配置(请参阅配置管理器)。还请记住
#如果Debug
必须为大写。e、 g.#如果调试
不起作用。C#项目(Visual Studio)
如果您使用的是ASP.NET,请确保Web.Config文件中的这一行:
<compilation debug="false" targetFramework="4.5">
因此,如果debug=“true”您的项目在调试模式下运行。也有类似的问题,其中“debug”从来都不是真的。通过取消选中“Define DEBUG constant”复选框并每次重新生成来尝试,但不起作用 我的解决方案是在调试配置的“条件编译符号”文本框中手动定义“调试”。重建时,Visual Studio 2019自动从文本框中删除调试符号(因为它确实不应该在那里),从那时起它再次工作。当我从调试切换到发布时,正确的行变灰了。
这似乎是VS2019(16.4.5)中可能存在的错误?在堆栈溢出帖子中链接到专家交换?!照常检查。我没有碰它。@Pam:“像往常一样检查过了”?不应该在Release build.Hmm中检查它。当我链接它时,我可以滚动到底部,它会显示所有其他答案。@BoltClock这是我搜索中出现的第一个答案:PWait there!在发布模式下,是否必须取消选中调试?那trace呢?必须检查还是不检查?什么?我没有得到那份工作hint@Pam:您说过代码即使在发布模式下也在执行。这是因为调试是在代码的某个地方定义的。看这里:不,我没有。在高级编译选项中,选中“定义调试”。即使在最后的EXE中#如果调试被忽略!我没有触及默认配置。是的,我正在发布模式下构建它。即使在最终的可执行文件中,#if调试现在也被忽略了(这在昨天之前没有发生过)。@Pam:查看我对另一个诊断测试和另一个区域的编辑以进行检查。如果我使用上面的代码,它会说(IDE中的发布模式):错误10“if”、“ElseIf”、“Else”、“End if”、“Const”或“Region”。在VB中使用
#if(表达式)然后
#如果结束
但不幸的是没有#错误@user1306322答案和你的评论都只在C#的情况下有效。@AhmedAbdelhameed我最近对VB没有任何经验,但是你知道在VB中“#如果”,“如果”,“调试大写”和“调试”是否重要吗?据我所知,在c语言中,“if”必须是小写,而“DEBUG”必须是大写,这样它才能工作。它们并不重要。VB不像C一样区分大小写。即使是#如果调试,那么
也可以正常工作。但是,在VB中编写它的正确方法是#如果调试,那么,如果启用了自动格式化(漂亮列表),VS将为您执行此操作。简而言之,在C语言中是if
/#if
,在VB中是if
/#if
,但是,与C语言不同的是,VB编译器将同时接受这两种格式。如果你像我一样使用新的项目格式(netcore/standard)来写这篇文章,这与条件编译器无关
#IF DEBUG
// Debugging code goes here
#ENDIF
<compilation debug="false" targetFramework="4.5">