在我的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文件?
答案 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