たぷつきません

おなかがでてきた。もうたぷついてるやん。

リリースで無かった事にされるコード

 以下のようなのを書いていたんだけど、リリースビルドしたら、式の評価がまるごとなされなくなって大変なことに。

    System.Diagnostics.Debug.Print("permissions=" + (permissions = session.CheckPermissions()));

 上記処理では、あるケースでは session.CheckPermissions() 内で例外を起こすということが重要だったのに何も起きずに続行されたのでハマった。
 [Conditional("DEBUG")]というアトリビュートが付加されているとそうなる仕掛け(ほとんどプリプロセスマクロ)ということなんだけど、どんだけ重いトレース文を中に書いてもリリースで無視されるってことは、かなり凄い!
 ただ、今頃気づいたので、Debug.PrintやDebug.WriteXXX 内で制御に関係するコード書いてないか全部見なおさなきゃならなくなったわー。orz
 Javaにも欲しいなと思ったけど、.classがビルドオプションでまるで違うバイナリになるというのは思想に反しそうな気もする。