以调试模式发布,但编译器会删除#if调试中的代码

Dea*_*ean 2 c# asp.net compilation visual-studio-2010

我只以调试模式发布以在本地计算机上进行测试,我希望可以使用“ #if debug”模式,以便可以测试生产中不需要的功能。

当我以调试模式发布时,web.config仍然具有

<system.web>
    <compilation debug="true" targetFramework="4.0">
</system.web>
Run Code Online (Sandbox Code Playgroud)

但是当我在项目的dll上使用反射器时,代码是这样的

#if debug
    PlaceHolder1.Visible = true;
#endif
Run Code Online (Sandbox Code Playgroud)

不存在。我认为编译器已将其删除。

注意:我不是在讨论构建,而是在发布。使用上面的代码,我可以像预期的那样进行调试构建

这是预期的行为吗?当我在调试模式下发布时,是否有办法让编译器包括那些代码?我要解决所有这些错误吗?

更新: 为响应@dash的评论,我的打包/发布Web设置为:

打包/发布Web设置

Nic*_*ler 5

C#预处理程序符号区分大小写。尝试:

#if DEBUG
Run Code Online (Sandbox Code Playgroud)