コンパイラ スイッチを使用して、大きなコード チャンクを含めるかどうかを制御するアプリケーションがあります。オートマチックトランスミッションまたはマニュアルトランスミッションの車を考えてください。デバッグ モードでは正常に動作しますが、リリース モードではオート トランスミッションとマニュアル トランスミッションの両方がコンパイルされているように見えるため、車の運転がうまくいきません...
では、オプション制御機能をコンパイラ スイッチから取得しようとするのは間違っているのでしょうか?
詳細: コンパイラ スイッチに関する私の理解に誤りがありました。
以下のコメントの簡単なプロジェクト。 (StackOverFlow の操作が苦手)
例えを続けると、(Winform) プロジェクトは手動送信で構築されました。セットアップ プロジェクトを使用してデバッグ モードでデプロイされました。(間違い)。
数年後、オートマチックトランスミッションが必要になりました。(基本クラスを発生させる共通性はありません)。いつの日かマニュアルトランスミッションが再び必要になるかもしれないと考えていました)
どのブロックのコードを使用するかを決定するには、コンパイラ スイッチを使用することをお勧めします。ここでも、自動送信バージョンがデバッグ モードで展開されました。
さらに数年実行した後、私はそれをリリースする必要があると判断しました。その時、私は問題に気づきました。
(ありがとう)求められた単純な例は、コンパイルされたのは両方のブロックではなく、#else のブロックだけであることを示しました。つまり、リリース ビルドはスイッチをオフと見なします。
したがって、何かが欠けていない限り、答えは自明です。展開オプションにコンパイラ スイッチを使用しないでください。