3

在 C# 中是否可以检查是否存在任何条件编译符号,而不仅仅是一个?

例如,

#if ANY_CONDITIONAL_COMPILATION_SYMBOL_IS_DEFINED
    MessageBox.Show( "Don't forget to remove the cc symbols before shipping.");
#else
    ...
4

3 回答 3

4

您可以使用||运算符:

#if (DEBUG || SOME_OTHER)
    MessageBox.Show(...)
#endif

有关此预处理器符号的更多信息,请访问MSDN

您只能使用运算符 ==(相等)、!=(不等)来测试 true 或 false 。True 表示已定义符号。该语句 #if DEBUG的含义与 相同#if (DEBUG == true)。您可以使用运算符 && (and), || (或),和!(not) 评估是否已定义多个符号。您还可以使用括号对符号和运算符进行分组。

于 2012-10-13T14:14:11.687 回答
0

如果我正确理解了您的问题,那么您要确保交付给客户端的最终构建应该在没有任何条件编译参数的情况下构建。

条件编译参数被指定为切换到csc(C# 编译器)。构建团队可以维护一个清单(基本上是单独的配置),以便在构建解决方案时,不会使用条件编译参数来构建解决方案/项目。可以有一个单独的构建配置,用于内部测试。

我认为 C# 中没有一种方法可以枚举为项目定义的条件编译参数,因为 CC 参数基本上用于编译项目。一旦项目建成,它们就没有任何意义。

于 2012-10-13T16:04:45.657 回答
0

你可以嵌套它们:

#if DEBUG
#if FOOBAR
    MessageBox.Show( "Don't forget to remove the cc symbols before shipping.");
#endif
#endif

这需要同时设置 DEBUG 和 FOOBAR 才能显示消息。

没有办法检查任何符号,但您可以对您使用的所有符号执行此操作。

于 2012-10-13T13:50:44.147 回答