<system.codedom> <compilers> <compiler compilerOptions="/define:Debug=True" /> </compilers> </system.codedom>
解决方法
Is the fact that that’s there defeating the purpose
of removing it from<compilation>
从MSDN C# Compiler Options起
要打开调试,编译器上的标志是/ debug而不是/ define:Debug = True
/debug : Instruct the compiler to emit debugging information.
/define : Defines preprocessor symbols.
因此,当您定义Debug = True时,您只能将此情况设为true:
#if DEBUG == true // Compile what is inside here ! #endif
/ define:Debug = True不会添加任何其他调试信息,除非您使用上述代码手动包含它们.
测试页面
我使用以下代码进行测试,看看发生了什么.
txtDebug.Text = HttpContext.Current.IsDebuggingEnabled.ToString(); #if DEBUG txtDebug.Text += "<br>defined Debug is on"; #endif #if DEBUG == true txtDebug.Text += "<br>defined Debug = true is on"; #endif
结果1
现在,如果debug =“false”并且使用compilerOptions =“/ define:Debug = True”,结果是
false
defined Debug = true is on
结果2
如果debug =“true”和compilerOptions =“/ define:Debug = True”结果是
true
defined Debug is on
defined Debug = true is on
结果3
<compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/define:Debug=True /D:DEBUG,TESTFLAG" type="Microsoft.CSharp.CSharpCodeProvider,System,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" warningLevel="4" />
结果是debug = false
False (debug is false)
defined Debug is on (but the defined DEBUG Now is runs)
defined Debug = true is on (This is also runs)
test flag (but the defined extra flag is also runs)
MSDN
看看MSDN for the /define (Preprocessor Definition)我看那个宣言
/define:Debug=True
只适用于这种代码的情况
#if DEBUG == true txtDebug.Text += "<br>defined Debug = true is on"; #endif
原文地址:https://www.jb51.cc/aspnet/245422.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。