6

私の ASP.NET MVC アプリケーションには .aspx ファイルがあります。Visual Studio 2010 プロジェクト エクスプローラー ツリーでそれを選択し、ファイル プロパティに移動します。「ビルド アクション」は「コンテンツ」に設定されています。「ビルド アクション」を「コンパイル」に変更し、Visual Studio にプロジェクトのビルドを依頼します。コンパイラ出力で、.aspx ファイルに対して次のエラー メッセージが表示されます。

C:\PathToProject\MyFile.aspx(1,1): error CS0234: The type or namespace name 'global_asax'
    does not exist in the namespace 'ASP' (are you missing an assembly reference?)

.aspx ファイルの最初の行は次のとおりです。

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/My.Master" Inherits="System.Web.Mvc.ViewPage" %>

それは私を驚かせます...

コンパイラは何を訴えようとしていますか? また、.aspx ファイルをコンパイルするにはどうすればよいですか?

4

2 に答える 2

5

ビューの .aspx では、ビルド アクションがコンテンツに設定されている必要があります。

ビルド時にプリコンパイル (または、少なくともコンパイラ エラー チェック) を有効にするには、次を追加します。

    <MvcBuildViews>true</MvcBuildViews>

.csproj の最初の <PropertyGroup> に。

于 2012-09-19T16:18:56.797 に答える
1

@KennyZが言うように、ASPX/ASCX/Master/CSHtmlファイルは「コンパイル」されていません-とにかく通常のビルドプロセスの一部としてではありません。これは、これらのファイルが最初の要求で Page クラスにコンパイルされるためです。これは、Web マスターが外出先でファイルを変更できるようにするためです。これは、特に ASPX ファイルに多くのコンテンツが含まれている場合に、一般的には良い考えです。

VS ファイル プロパティ ビルド アクションはこの設定を制御しないことに注意してください。BuildActionプロパティは非表示にするか、少なくともより適切に文書化する必要があると思います。開発者コミュニティにはあまり理解されていません。

しかし、それは可能です!VS2005 では、彼らが不運な「Web サイト」プロジェクトを導入したとき (VS2005 SP1 が登場するまで VS2003 の「Web アプリケーション」の代わりとして)、ASPX/ASCX/Master ファイルをアプリケーションのアセンブリにプリコンパイルするオプションがありました -コンテンツを含まないスタブ *.aspx ファイルを残しましたが、代わりにコンパイル済みのページ クラスを参照していました。

VS2010 でもこれを行うことができますがaspnet_compiler.exe、Web アプリケーション プロジェクトには GUI が存在しないため、コマンド ラインを使用する必要があります。

ここで利用可能なその他のドキュメントがあります: http://msdn.microsoft.com/en-us/library/bb398860%28v=vs.100%29.aspx

そしてここ:http://msdn.microsoft.com/en-us/library/ms229863%28v=vs.100%29.aspx

于 2012-09-19T15:37:52.873 に答える