C# で、1 つだけでなく、条件付きコンパイル シンボルの存在をチェックすることは可能ですか?
例えば、
#if ANY_CONDITIONAL_COMPILATION_SYMBOL_IS_DEFINED
MessageBox.Show( "Don't forget to remove the cc symbols before shipping.");
#else
...
C# で、1 つだけでなく、条件付きコンパイル シンボルの存在をチェックすることは可能ですか?
例えば、
#if ANY_CONDITIONAL_COMPILATION_SYMBOL_IS_DEFINED
MessageBox.Show( "Don't forget to remove the cc symbols before shipping.");
#else
...
||
次の演算子を使用できます。
#if (DEBUG || SOME_OTHER)
MessageBox.Show(...)
#endif
このプリプロセッサ シンボルの詳細については、MSDNで入手できます。
演算子 == (等値)、!= (不等値) は、 true または false をテストするためにのみ使用できます。True は、シンボルが定義されていることを意味します。ステートメント
#if DEBUG
は と同じ意味#if (DEBUG == true)
です。演算子 && (および)、|| を使用できます。(または !(not) 複数のシンボルが定義されているかどうかを評価します。記号と演算子を括弧でグループ化することもできます。
私があなたの質問を正しく理解しているなら、クライアントに出荷される最終ビルドが条件付きコンパイル引数なしでビルドされることを確認したいと思います。
csc
条件付きコンパイル引数は、 (C#コンパイラ)への切り替えとして指定されます。ビルドチームは、ソリューションのビルド時に条件付きコンパイル引数がソリューション/プロジェクトのビルドに使用されないように、チェックリスト(基本的に個別の構成)を維持できます。社内テスト用に行われるビルド用に別の構成が存在する場合があります。
CC引数は基本的にプロジェクトのコンパイルに使用されるため、C#には、プロジェクトに対して定義された条件付きコンパイル引数を列挙する方法はないと思います。プロジェクトが構築されると、これらは重要ではなくなります。
それらをネストすることができます:
#if DEBUG
#if FOOBAR
MessageBox.Show( "Don't forget to remove the cc symbols before shipping.");
#endif
#endif
これには、メッセージを表示するために DEBUG と FOOBAR の両方を設定する必要があります。
シンボルをチェックする方法はありませんが、使用するすべてのシンボルに対してそれを行うことができます。