我只是在调试模式下发布以在我的本地机器上进行测试,我希望'#if debug'模式可以工作,这样我就可以测试我不想要的功能。
当我在调试模式下发布时,web.config仍然有
<system.web>
<compilation debug="true" targetFramework="4.0">
</system.web>
但是当我在项目的dll上使用反射器时,代码就像这样
#if debug
PlaceHolder1.Visible = true;
#endif
不存在。我认为编译器已将其删除。
注意:我不是在谈论构建,我在谈论发布。执行调试构建工作正如我所期望的那样,上面的代码仍然存在
这是预期的行为吗?当我在调试模式下发布时,有没有办法让编译器包含那些代码?我是不是错了?
更新 为响应@ dash的评论,我的Package / Publish Web设置为:
答案 0 :(得分:4)
C#预处理程序符号区分大小写。尝试:
#if DEBUG
答案 1 :(得分:2)
是的,这是预期的行为。条件编译指令(例如#if debug
)仅在编译时考虑。构建C#代码时会编译它。那你指出的compilation debug
选项是什么?我不确定,但我认为它会改变aspx页面的编译方式或网站运行构建代码的方式,这种情况发生在查看页面之前,而不是代码构建时。
答案 2 :(得分:1)
在Visual Studio中:
1. Right click on your project choose properties.
2. Go to the "Build" tab
3. Select Release in the "Configuration" combobox.
4. Check the "Define DEBUG constant"-checkbox.
确保在部署到生产环境之前不要忘记将其删除。
编辑: 由于您使用的是小写调试,因此您可以在步骤4中的“条件编译符号”中输入debug(小写)而不是步骤4: