2011-01-03 21 views
3

MVC 3 WebアプリケーションのApp_Codeディレクトリの下に新しいクラスを追加するたびに、ビルドアクションが「コンテンツ」に設定されます。私はデフォルトで "コンパイル"に設定する必要があります。 Visual Studioのどこかに、このディレクトリの下にあるコードのデフォルトビルドアクションを設定していますか?App_Codeディレクトリのデフォルトビルドアクション?

+1

好奇心の高まりから、あなたはそこにどのようなコードを配置していますか?私は巨大なMVCアプリで膝が深く、何かを置いたことがないので、何かを見逃しているのであれば好奇心が強い。 –

+0

私はいくつかのカスタムアクションフィルター属性、HTMLヘルパーなどを持っています。MVC固有のクラスなので、それらを配置する論理的な場所と思われます。 – Scott

+2

Schluerこれらの種類のドメインクラスには、App_Codeを使用しないことを強くお勧めします。特定の名前空間を持つように、プロジェクト構造にサテライトアセンブリまたは追加のフォルダーを追加する方がクリーンです。現代のASP.NET開発では、App_Codeディレクトリはめったに最適なオプションではありません。 –

答えて

9

MVCプロジェクトはウェブサイトプロジェクトではなく、Webアプリケーションプロジェクトです。ウェブサイトプロジェクト(プリコンパイルされていない場合)は、ソースコードとともにデプロイされ、ASP.NETランタイムによって動的にコンパイルされます。 Webアプリケーションプロジェクトは、別々のステージとして構築され展開されます。 App_Codeは、アプリケーションの残りの部分とは別にコンパイルされた特別なASP.NETフォルダです。このため、App_Codeの項目はデフォルトでContentになっているため、アプリケーションとは別に(コンパイルされて)デプロイ(ソース)することができます。

Webアプリケーションプロジェクトでは、プロジェクトレイアウトの標準フォーマットは適用されません。すべてのコンパイル済みコードは、その日の終わりに適用されます。プロジェクトのModelsフォルダを使用するか、独自のフォルダを作成することをお勧めします.App_Codeは使用しません。

+0

情報ありがとうございます。それは役に立ちます。プロジェクトを再構築して、App_Codeディレクトリをまったく使用しないようにします。 – Scott

+2

App_Codeから別の場所に移動する場合は、ビルドアクションを変更しない場合は、それを 'Compile'に設定する必要があります。 –

+0

しかし、あなたはかみそりヘルパー機能をどこに置いていますか? Scott Gu氏によると、Devのサイクル中にViewsフォルダ内の適切な場所に置く時間がなかったため、MSが不正行為をしたり、カミソリ機能をApp_Codeディレクトリに置いたりしたという。私は剃刀ヘルパーを使用しているので、私はこの問題に遭遇しており、より良いパフォーマンスのために私のcshtmlコードをプリコンパイルしたいと思います。誰もが剃刀ヘルパーと何をするべきかの提案を持っていますか?私は人々がちょうどそれらを使用していないと思いますか? –

関連する問題