第140回 デバッグ版とリリース版で処理を分岐する方法について
公開日:2018-03-30 更新日:2019-05-11
1. 概要
デバッグ版とリリース版で処理を変える方法について説明しています。処理を変える例としては、デバッグ版では詳細なログ出力を行い、リリース版ではユーザに見せたくないログ出力を行わない、などがあります。
また、ソリューションの構成、プリプロセッサ ディレクティブについても説明しています。
また、ソリューションの構成、プリプロセッサ ディレクティブについても説明しています。
分岐方法
1. プログラムのソース中にフラグを持たせる
2. ファイルにフラグを持たせる
3. コマンドラインの引数を使う
4. プリプロセッサ ディレクティブを使う
2. ファイルにフラグを持たせる
3. コマンドラインの引数を使う
4. プリプロセッサ ディレクティブを使う
2. 動画
3. 分岐方法
1. プログラムのソース中にフラグを持たせる
動画の01:11~
グローバル変数でフラグを保持して分岐させます。
デバッグ版とリリース版を切り替える場合は、毎回ソース中のフラグを変更する必要があり面倒です。
グローバル変数でフラグを保持して分岐させます。
デバッグ版とリリース版を切り替える場合は、毎回ソース中のフラグを変更する必要があり面倒です。
bool isDebug = true;
if (isDebug) {
//デバッグ時
MessageBox.Show("デバッグ版です。");
}
2. ファイルにフラグを持たせる
動画の03:23~
1番目の方法のフラグの値を、ファイルなどでソースの外に定義して、動的に読み込んで分岐させます。
リビルドせずに誰でも簡単に変更できますが、それがデメリットになる場合もあります。
1番目の方法のフラグの値を、ファイルなどでソースの外に定義して、動的に読み込んで分岐させます。
リビルドせずに誰でも簡単に変更できますが、それがデメリットになる場合もあります。
debug = on
3. コマンドラインの引数を使う
動画の04:43~
EXEのショートカットを作成し、ショートカットのプロパティの「リンク先」で引数を設定します。そしてそれを実行時に取得して分岐させます。
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、#else、#endif、#define など) と言うコンパイラへの指示を使用して分岐させます。この指示により実行されないソースは、存在しないものとしてコンパイルされます。デバッグ用の詳細なログ出力などの負荷の高い処理を、リリース版ではビルドの段階で削除してしまうことができます。デバッグ版からリリース版の切り替えは、画面上部の構成を「debug」から「release」に変えることで行えます。構成を変更すると、EXEの出力先が変わるので要注意です。
#if DEBUG
MessageBox.Show("デバッグ版です。");
#else
MessageBox.Show("リリース版です。");
#endif