2017-03-28 1 views
0

Debug.Assert()呼び出しが多いDLLがあります。 私はこのDLLをリリースとしてビルドしているので、Assertはアクティブではありません(私はこれを小さなテストプログラムでチェックしました)。 ここでは、このDLLをDebug-Buildソフトウェアプロジェクトで使用し、何らかの理由でDLLからのAssertが再びアクティブになります。 プロジェクトのDEBUG定義によって、DLL内のアサートが再アクティブ化されますか? (VisualStudioを2013)C#:Release-Build-DL​​LのDebug.Assert()はDebug-Build-Projectによってアクティブ化されているようです

答えて

0

documentation状態:

C#コンパイラは#if指令に遭遇し、#endifの指示により、最終的に、その後、それが唯一の指定されたシンボル場合ディレクティブ間のコードをコンパイルしますが定義される。

これを考慮すると、リリースモードでコンパイルするときにコードを削除する必要があるため、これらのアサーションは表示しないでください。

リリースアセンブリを逆コンパイルして、コードが生成されたかどうかを確認できます。

+0

実際に#if /#endifはありません。 Debug.Assert istは次のように定義されています: '[条件付き( "DEBUG")] public static void Assert(bool condition);' –

+0

はい、Assertソースを見ると#IFを使用しているようです。 https://referencesource.microsoft.com/#mscorlib/system/bcldebug.cs,108 –

関連する問題