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 类,这是为了让网站管理员可以随时修改文件,这通常是一个好主意,尤其是在 ASPX 文件包含大量内容的情况下。

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

但这是可以完成的!在 VS2005 中,当他们引入命运多舛的“网站”项目(作为 VS2003“Web 应用程序”的替代品,直到 VS2005 SP1 出现)时,可以选择将 ASPX/ASCX/Master 文件预编译到应用程序的程序集中 -它确实留下了不包含任何内容的存根 *.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

于 2012-09-19T15:37:52.873 回答