2009-09-04 7 views
16

次のステートメントを持つASP MVCビューを持っています。asp.mvc view enteres #IFリリース構成のDEBUG

#if DEBUG 
    //section 1 
    //do stuff 
#else 
    //section 2 
    //do other stuff 
#endif 

ビジュアルスタジオでドロップダウンからビルドを実行すると、コードはセクション1に進みます。

ソリューション構成プロパティーは、ソリューションのすべてのサブプロジェクトがリリース構成に設定されます。

ここには何が入っていないのですか?

答えて

31

プロジェクトには2つの完全に別々のコンパイルがあることを理解することが重要です。最初は、Visual Studioで行うことです。 2つ目は、ASP.NETがページが提供される直前に行うことです。ビュー内のDEBUGが2番目のステップで実行された場合。あなたが説明するリリースビルドが最初のステップです。したがって、プロジェクトのデバッグ/リリース設定は、Web.config/ASP.NETコンパイラのデバッグ設定とまったく関係がありません。

また、Visual StudioビルドでWeb.configのデバッグ設定を変更することは完全に不適切です。これらは2つの別々のコンパイルであり、他のコンパイルには影響しません。

一方、Visual Studio内でデバッグしているときにビューの動作が異なるようにするには、おそらく完全に合理的な必要があります。ビューの外で、ASP.NETの代わりにVisual Studioでコンパイルされたものに "if"ステートメントを移動するだけで済みます。これはHTMLヘルパーで行います。たとえば、

Visual Studioでデバッグ設定で実行している場合はデバッグJSファイルが含まれますが、それ以外の場合はJSが最小限に抑えられます。

+1

ミニチュアと完全なjavascript/cssが私がこのIF DEBUGを使用していた理由です。あなたの答えをありがとう。 –

+0

ビジュアルスタジオのグレーが間違ったテキストブロックから派生しているので、混乱します。 – ajbeaven

+1

2つのコンパイラについて+1非常に良い説明。今は理にかなっている。 – ashes999

0

プロジェクトの設定を確認して、DEBUGが定義されていないことを確認します。

3

ファイルに<compilation debug="false">を設定してください。

+0

これは動作していませんか?これは私にとってはうまくいく:http://stackoverflow.com/questions/2951128/c-and-asp-net-mvc-using-if-directive-in-a-view/4509854#4509854 – russau

関連する問題