【发布时间】:2012-10-04 22:36:04
【问题描述】:
我只是在调试模式下发布以在我的本地计算机上进行测试,我希望“#if debug”模式能够工作,以便我可以测试我在生产中还不需要的功能。
当我在调试模式下发布时,web.config 仍然有
<system.web>
<compilation debug="true" targetFramework="4.0">
</system.web>
但是当我在项目的 dll 上使用反射器时,代码是这样的
#if debug
PlaceHolder1.Visible = true;
#endif
不存在。我认为编译器已将其删除。
注意:我不是在谈论构建,而是在谈论发布。在上面的代码仍然存在的情况下,按照我的预期进行调试构建工作
这是预期的行为吗?当我在调试模式下发布时,有没有办法让编译器包含这些代码?我是不是搞错了?
更新: 作为对@dash 评论的回应,我的打包/发布 Web 设置是:
【问题讨论】:
-
如果我使用
if #DEBUG,而不是if #debug,这对我有效。此外,请务必检查项目属性中的Package/Publish Web设置,以确保Debug是发布时的活动构建配置。 -
您的 Build 属性页是什么样的?你有
Define DEBUG constant打勾吗?如果我在“打包/发布”网页中设置了“调试”并且在“构建”选项卡上勾选了该选项,然后执行“发布”,这对我有用 - 您可以使用 ILSpy (ilspy.net) 检查以确保您期望的代码有被包括在内。 -
@dash yes 定义 DEBUG 常量已打勾,但它对我不起作用。我一直在使用reflector.net 在发布后检查编译的代码,但感谢有关 ILSpy 的提示,我以前没有听说过。以防万一,我会再试一次你描述的设置
标签: c# asp.net visual-studio-2010 compilation