第140回 デバッグ版とリリース版で処理を分岐する方法について

公開日:2018-03-30 更新日:2019-05-11

1. 概要

デバッグ版とリリース版で処理を変える方法について説明しています。処理を変える例としては、デバッグ版では詳細なログ出力を行い、リリース版ではユーザに見せたくないログ出力を行わない、などがあります。

また、ソリューションの構成、プリプロセッサ ディレクティブについても説明しています。

分岐方法

1. プログラムのソース中にフラグを持たせる
2. ファイルにフラグを持たせる
3. コマンドラインの引数を使う
4. プリプロセッサ ディレクティブを使う

2. 動画



3. 分岐方法

1. プログラムのソース中にフラグを持たせる

動画の01:11~
グローバル変数でフラグを保持して分岐させます。
デバッグ版とリリース版を切り替える場合は、毎回ソース中のフラグを変更する必要があり面倒です。

bool isDebug = true;

if (isDebug) {
    //デバッグ時
    MessageBox.Show("デバッグ版です。");
}


2. ファイルにフラグを持たせる

動画の03:23~
1番目の方法のフラグの値を、ファイルなどでソースの外に定義して、動的に読み込んで分岐させます。
リビルドせずに誰でも簡単に変更できますが、それがデメリットになる場合もあります。

debug = on

3. コマンドラインの引数を使う

動画の04:43~
EXEのショートカットを作成し、ショートカットのプロパティの「リンク先」で引数を設定します。そしてそれを実行時に取得して分岐させます。

var args = Environment.GetCommandLineArgs();
//args[0]  EXEのフルパスがデフォルトで入ります
if (args.Count() >= 2) {
    if (args[1] == "1") {
        MessageBox.Show("デバッグ版です。");
    }
}

4. プリプロセッサ ディレクティブを使う

動画の09:53~
プリプロセッサ ディレクティブ(#if、#else、#endif、#define など) と言うコンパイラへの指示を使用して分岐させます。この指示により実行されないソースは、存在しないものとしてコンパイルされます。デバッグ用の詳細なログ出力などの負荷の高い処理を、リリース版ではビルドの段階で削除してしまうことができます。デバッグ版からリリース版の切り替えは、画面上部の構成を「debug」から「release」に変えることで行えます。構成を変更すると、EXEの出力先が変わるので要注意です。

#if DEBUG
    MessageBox.Show("デバッグ版です。");
#else
    MessageBox.Show("リリース版です。");
#endif