2012-09-19 76 views
4

在我的ASP.NET MVC应用程序中,我有一个.aspx文件。我在Visual Studio 2010 Project Explorer树中选择它并转到文件属性 - “构建操作”设置为“内容”。我将“Build Action”更改为“Compile”,并要求Visual Studio构建该项目。我收到以下错误消息编译器输出我的.aspx文件:如何让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

ASPX文件未编译。你想做什么? – KennyZ

+0

@KennyZ:我希望在Visual Studio中的项目构建期间调用ASP.NET预编译。 – sharptooth

+0

Yor .cs或.vb文件是预编译的,而不是.aspx。该设置应该在项目属性中,并且不应该更改任何单个文件的设置。 – KennyZ

回答

0

正如@ KennyZ所说,ASPX/ASCX/Master/CSHtml文件不是“编译”的 - 不是常规编译过程的一部分。这是因为这些文件按照首次请求编译到Page类中,这是为了允许网站管理员随时修改文件,这通常是一个好主意,尤其是如果ASPX文件包含大量内容。

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

但它可以做到!在VS2005中,当他们推出命运多ill的“网站”项目时(作为VS2003“Web应用程序”的替代品,直到VS2005 SP1问世),可以选择将ASPX/ASCX /主文件预编译到应用程序的程序集中 - 它确实留下了不包含任何内容的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

3

视图的的.aspx必须有它的生成操作设置为内容。

要启用预编译(或者,至少,编译器错误检查)在构建时,在你的.csproj添加

<MvcBuildViews>true</MvcBuildViews> 

到第一<的PropertyGroup>。

+0

这是做这件事的首选方式,但我想补充一点,你应该复制你的'.csproj'(当你把它分开时),并确保它在你用你最喜欢的文本编辑器进行编辑时不会在VS中打开(否则VS并不总是按我的经验重新加载它) – Basic

+2

这不会预编译,这只会验证页面。 – sharptooth

相关问题