私は、debug = trueが実稼働サーバー上で悪いことを理解しています。debug = falseのWebアプリケーション内で、デバッグモードのDLLはどうなりますか?
私は現在、サードパーティ製のDLLをいくつか使用しており、デバッグモードでコンパイルされていて、知りたいと思っています。デバッグモードでDLLにはdebug = falseのWebアプリケーションがどうなりますか?
私は、debug = trueが実稼働サーバー上で悪いことを理解しています。debug = falseのWebアプリケーション内で、デバッグモードのDLLはどうなりますか?
私は現在、サードパーティ製のDLLをいくつか使用しており、デバッグモードでコンパイルされていて、知りたいと思っています。デバッグモードでDLLにはdebug = falseのWebアプリケーションがどうなりますか?
system.web/compilation構成要素のデバッグ属性は、コンパイルされたDLLのコードには影響しません。
これは動的にコンパイルされたコードにのみ影響し、ランタイムにはいくつかの影響があります(たとえば、debug = trueの場合、system.web/httpRuntime設定要素のexecutionTimeout要素は無視されます)。
C#/ .NET(C++ DLLとは異なります)では一般的に問題ありません。デバッグとリリースはほぼ同じであり、(C++ DLLの場合と同様に)メモリ管理の問題はありません。次
はjaybazのblogからです:
は、人々は通常、デバッグ&リリースとの差として識別する3つの事があります。興味のあるものを決定する必要があります:
"DEBUG"プリプロセッサフラグ。 'csc/define'でアセンブリー/ネットモジュール全体、または#defineでファイル全体に設定できます。
デバッグ情報(pdb)。 'csc/debug [+ | - ]'で設定します。それはcodegenには影響しませんので、あまり面白くありません。
最適化。 'csc/optimize [+ | - ]'で設定します。マネージコードでは、ランタイムのJITterはほぼすべての最適化を行います。このフラグから生成されたILの差はかなり小さいです。 Whidbey C#コンパイラは、このフラグに以前のバージョンよりも大きな違いがありますが、それほど多くはありません。
AFAIKをデバッグモードのコンパイラでコンパイルしても、バイナリデータが最適化されず、デバッガが簡単になります。ケースでパフォーマンスが低下する可能性があります。また、コンパイラは、デバッガ用のビルドに余分なデータを追加します。
私はあなたがASP.Netウェブサイトと、デバッグモードとリリースモードでコンパイルされたDLLについて話していると仮定します。
.NETではほとんどの最適化がJITに任されていますが、デバッグが容易になるように作られていない最適化(通常はサイズ用)がいくつかあります。 – AnthonyWJones