在我看到的所有关于#if编译器指令的例子中,它们都使用了“DEBUG”。我可以以同样的方式使用“RELEASE”来排除在调试模式下编译时不想运行的代码吗?我想用这个块包围的代码会发送一堆电子邮件,我不想在测试时意外地发送这些邮件。
当前回答
为什么不干脆
#if RELEASE
#undef DEBUG
#endif
其他回答
RELEASE没有定义,但是您可以使用
#if (!DEBUG)
...
#endif
不,不会的,除非你做点工作。
这里重要的部分是DEBUG到底是什么,它是编译器可以检查的一种定义的常量。
如果你检查项目属性,在Build选项卡下,你会发现三个东西:
标记为“条件编译符号”的文本框 标记为“定义调试常量”的复选框 标记为“定义TRACE常量”的复选框
没有这样的复选框,也没有预先定义的名为RELEASE的常量/符号。
但是,您可以轻松地将该名称添加到标记为“条件编译符号”的文本框中,但请确保在这样做之前将项目配置设置为发布模式,因为这些设置是每个配置的。
所以基本上,除非您将其添加到文本框中,否则#if RELEASE在任何配置下都不会生成任何代码。
在我的VS install (VS 2008) #if RELEASE不工作。但是你可以使用#if !DEBUG
例子:
#if !DEBUG
SendTediousEmail()
#endif
不。
在调试配置中有一个debug定义的常量(由Visual Studio自动定义),而在发布模式中没有定义这样的常量。检查构建中的项目设置。
在Project -> Build下选择[Define DEBUG常量]就像在每个文件的开头都包含# Define DEBUG。
如果你想为发布配置定义一个RELEASE常量,请到:
项目属性->构建 选择释放模式 在“条件编译符号”文本框中输入:RELEASE
为什么不干脆
#if RELEASE
#undef DEBUG
#endif
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 为什么Visual Studio 2015/2017/2019测试运行器没有发现我的xUnit v2测试
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 自动化invokerrequired代码模式
- 没有ListBox。SelectionMode="None",是否有其他方法禁用列表框中的选择?
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- c#线程安全快速(est)计数器
- 如何将此foreach代码转换为Parallel.ForEach?
- 如何在iis7应用程序池中设置。net Framework 4.5版本