在我的ASP.NET MVC应用程序,我有一个.aspx文件。 我在Visual Studio 2010 Project Explorer树中选择它,然后转到文件属性 - 在“生成操作”设置为“内容”。 我改“建设行动”,以“编译”,并要求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文件?
视图的的.aspx必须有它的生成操作设置为内容。
为了使预编译(或,至少,编译器错误检查)在生成时,添加
<MvcBuildViews>true</MvcBuildViews>
在第一个<的PropertyGroup>在.csproj的。
作为@KennyZ说,ASPX / ASCX /硕士/ CSHTML文件不被“编译” - 不作为常规构建过程的一部分呢。 这是因为这些文件被编译成在第一次请求页面类,这是为了让网站管理员修改的文件上这去,这一般来说是个好主意,特别是如果ASPX文件包含了很多内容。
需要注意的是VS文件属性生成操作不控制此设置-我觉得BuildAction
属性应该被隐藏,或者好至少记录-它不能很好地通过开发者社区的理解。
但这是可以完成的! 在VS2005当他们推出了命运多舛的“网站”项目(为VS2003“Web应用程序”,直到VS2005 SP1出来替换)不存在对ASPX / ASCX /主文件预编译到应用程序的组件的选项 - 它没有留下一个不包含任何内容存根* .aspx文件,而是引用的预编译的页面类。
你仍然可以做到这一点与VS2010,但你需要使用命令行aspnet_compiler.exe
的图形用户界面,不适用于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