如何让Visual Studio“编译”.aspx文件?

时间:2012-09-19 14:18:51

标签: asp.net .net asp.net-mvc visual-studio

在我的ASP.NET MVC应用程序中,我有一个.aspx文件。我在Visual Studio 2010项目资源管理器树中选择它并转到文件属性 - “构建操作”设置为“内容”。我将“Build Action”更改为“Compile”并要求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文件?

2 个答案:

答案 0 :(得分:4)

视图的.aspx必须将其Build Action设置为Content。

要在构建时启用预编译(或至少编译器错误检查),请添加

    <MvcBuildViews>true</MvcBuildViews>

到第一个&lt; PropertyGroup&gt;在.csproj中。

答案 1 :(得分:0)

正如@KennyZ所说,ASPX / ASCX / Master / CSHtml文件没有“编译” - 无论如何都不是常规构建过程的一部分。这是因为这些文件在第一次请求时被编译成Page类,这是为了允许网站管理员在移动中修改文件,这通常是一个好主意,特别是如果ASPX文件包含大量内容。

请注意,VS文件属性构建操作不控制此设置 - 我认为BuildAction属性应该被隐藏或至少更好地记录 - 开发人员社区不太了解它。

但它可以做到!在VS2005中,他们引入了命运多“的”网站“项目(作为VS2003”Web应用程序“的替代品,直到VS2005 SP1出现),有一个选项可以将ASPX / ASCX / Master文件预编译到应用程序的程序集中 - 它确实留下了不包含任何内容的stub * .aspx文件,而是引用了预编译的页面类。

您仍然可以使用VS2010执行此操作,但是您需要使用命令行aspnet_compiler.exe作为GUI,因为它不适用于Web应用程序项目。

此处提供了更多文档: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