デバック実行して、動きを見てみたんですがね。
その分岐点にブレークポイントを貼ることすらできやしねぇ。
ビルド構成は、「B-Debug」で実行。
#ビルド構成は、全部で6種類
「A-Debug」「A-Releace」
「B-Debug」「B-Releace」
「Debug」「Releace」
-------------------------------------------------
using System;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Mainメソッド実行");
Class1.Test("Bの時だけ実行したい");//この行にブレークポイントを張って実行すると下にずれる
}
[Conditional("B-Debug"),Conditional("B-Releace")]
static private void Test(string message)
{
Console.WriteLine(message);
}
}
}
-------------------------------------------------
Testメソッドに入らない。
Class1.Testの行にブレークポイントを張ってみたが、
それすら後ろにずれてしまう。
■@IT:.NET TIPS テスト用コードをデバッグ時にのみ実行するには? - C# VB.NET
に記載してあった、条件付コンパイル定数の指定を見てみると、
"B-Debug","B-Releace"がなかった。
追加して、再度実行してみる。
#あったのは以下の通り。
#「DEBUG」「NUNIT」「PATTERN_B」「RELEACE」
##ビルド構成につけられている名前が、
##そのまま条件付コンパイル定数に使えると思ったら甘いらしい。
##どこでビルド構成と、条件付コンパイル定数を関連付けているのか謎。
実行したが、やっぱりTestのメソッドに入らない。
Conditionalを"DEBUG"、ビルド構成を「Debug」に変更してやってみた。
(変更箇所は//●)
-------------------------------------------------
using System;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Mainメソッド実行");
Class1.Test("Bの時だけ実行したい");
}
[Conditional("DEBUG"),Conditional("B-Releace")]//●
static private void Test(string message)
{
Console.WriteLine(message);
}
}
}
-------------------------------------------------
きちんと通りました。
ためしに、Conditionalを"DEBUG"を"PATTERN_B"に変更して、
ビルド構成を「B-Debug」で実行。(変更箇所は//●)
-------------------------------------------------
using System;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Mainメソッド実行");
Class1.Test("Bの時だけ実行したい");
}
[Conditional("PATTERN_B")]//●
static private void Test(string message)
{
Console.WriteLine(message);
}
}
}
-------------------------------------------------
きちんと中に入ってくれました。
他人が作ったのを改造してるから知らないことが多すぎる。
どうやって、ビルド構成と、条件付コンパイル定数を関連付けるかが次の課題。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿