2009-05-20 12 views
1

私のアプリが「デバッグ」ではなく「リリース」としてコンパイルされているかどうかを確認するにはどうすればよいですか?私はVS 2008のプロジェクトのプロパティ>ビルドし、設定をデバッグからリリースに行ったが、私は変更に気づいた?これはASP.NETプロジェクトです。Asp.netリリースビルド対デバッグビルド

+0

similars質問、一つの質問、および多くの、多くの異なる答え: http://stackoverflow.com/questions/654450/programatically- detect-release-debug-mode-net http://stackoverflow.com/questions/798971/how-to-idenfiy-if-the-dll-is-debug-or-release-build-in-net http://stackoverflow.com/questions/194616/how-to-tell-if-net-app-was-compiled-in-debug-or-release-mode http://stackoverflow.com/questions/50900/best-way-to-detect-a-release-build-from-a-debug-build-net http://stackoverflow.com/questions/890459/ asp-net-release-build-vs-debug-build – Kiquenet

答えて

1

Web.configの1つのデバッグはtrueに設定されますが、リリースアプリケーションでもこれを実際に設定できます。デバッグで

しかしDEBUGが設定されているように定義し、それを行うには簡単です:

bool is_debug; 

#ifdef DEBUG 
is_debug = true; 
#else 
is_debug = false; 
#endif 
+0

デバッグは、Web.configで明示的に設定した場合、またはF5キーを押してWebサイトを実行し、設定ファイルを変更できる場合にのみ設定されます。この設定は*ビルド構成*が選択されていることを示す指標ではありません。 – Gromer

+0

本当ですか?ああ、それでnm: – Lloyd

3

あなたはDLLは、デバッグ属性で、デバッグモードで構築されたかどうかを知りたい場合は、あなたの最善の策は反映です。

Assembly assembly = Assembly.GetAssembly(GetType()); 
bool debug = false; 
foreach (var attribute in assembly.GetCustomAttributes(false)){ 
    if (attribute.GetType() == typeof(System.Diagnostics.DebuggableAttribute)){ 
    if (((System.Diagnostics.DebuggableAttribute)attribute) 
     .IsJITTrackingEnabled){ 
     debug = true; 
     break; 
    } 
    } 
} 

これは、(効果自体に)そのコードを呼び出しているアセンブリを取得し、その後、アセンブリがデバッグモードでコンパイルされた場合はtrueにデバッグブール値を設定します、「How to tell if an existing assembly is debug or release」から撮影

それ以外の場合はfalseです。

これは、コンソールアプリケーション(リンクされた例のように)に簡単にドロップしてから、確認したいdll/exeのパスを渡すことができます。あなたは、このようなパスからアセンブリをロードします:

Assembly assembly = 
    Assembly.LoadFile(System.IO.Path.GetFullPath(m_DllPath.Text)); 
0

あなたはIsJITTrackingEnabled以上を探す必要があり - コードを最適化し、JITの最適化用にコンパイルされているかどうかとは完全に独立しています。

また、ReleaseモードでコンパイルしてDebugOutputを "none"以外に選択すると、DebuggableAttributeが存在します。

私の記事を参照してください: How to Tell if an Assembly is Debug or ReleaseHow to identify if the DLL is Debug or Release build (in .NET)

のStackOverflowで
関連する問題