检查c#中的任何条件编译符号

时间:2012-10-13 13:47:46

标签: c# compilation conditional

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

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

3 个答案:

答案 0 :(得分:3)

您可以使用||运算符:

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

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

  

你可以使用运算符==(相等),!=(不等式)来测试   对于真或假。 True表示符号已定义。该声明   #if DEBUG#if (DEBUG == true)具有相同的含义。您可以使用运算符&& (和),|| (或),和! (不)评估是否多重   已定义符号。您还可以对符号和运算符进行分组   括号。

答案 1 :(得分:0)

你可以嵌套它们:

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

这将需要为要显示的消息设置DEBUG和FOOBAR。

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

答案 2 :(得分:0)

如果我正确理解您的问题,那么您需要确保在没有任何条件编译参数的情况下构建发送到客户端的最终构建。

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

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