【发布时间】:2017-03-28 10:52:05
【问题描述】:
我有一个包含大量 Debug.Assert() 调用的 DLL。 我已将此 DLL 构建为 Release,因此 Assert 未处于活动状态(我用一个小测试程序检查了这一点)。 现在我在一个调试构建的软件项目中使用这个 DLL,由于某种原因,来自 DLL 的断言再次处于活动状态。 项目的 DEBUG 定义是否会重新激活 DLL 中的断言? (VisualStudio 2013)
【问题讨论】:
我有一个包含大量 Debug.Assert() 调用的 DLL。 我已将此 DLL 构建为 Release,因此 Assert 未处于活动状态(我用一个小测试程序检查了这一点)。 现在我在一个调试构建的软件项目中使用这个 DLL,由于某种原因,来自 DLL 的断言再次处于活动状态。 项目的 DEBUG 定义是否会重新激活 DLL 中的断言? (VisualStudio 2013)
【问题讨论】:
documentation 声明:
当 C# 编译器遇到 #if 指令,最后是 #endif 指令时,只有定义了指定的符号,它才会编译指令之间的代码。
考虑到这一点,我想说你不应该看到这些断言,因为在发布模式下编译时,代码应该被忽略了。
您可以尝试反编译您的发布程序集,看看是否生成了代码。
【讨论】: