【问题标题】:How do I make Visual Studio "compile" a .aspx file?如何让 Visual Studio“编译”一个 .aspx 文件?
【发布时间】:2012-09-19 14:18:50
【问题描述】:

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

【问题讨论】:

  • ASPX 文件未编译。你想做什么?
  • @KennyZ:我希望在 Visual Studio 中的项目构建期间调用 ASP.NET 预编译。
  • Yor .cs 或 .vb 文件将被预编译,而不是 .aspx。该设置应在项目属性中,您不必更改任何单个文件的设置。
  • 您是否在寻找此类:System.Web.Compilation.ClientBuildManager ?

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


【解决方案1】:

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

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

    <MvcBuildViews>true</MvcBuildViews>

到 .csproj 中的第一个

【讨论】:

  • 这是首选的方法,但我要补充一点,你应该复制你的 .csproj (当你破坏它时)并确保它在编辑时没有在 VS 中打开用你最喜欢的文本编辑器(否则根据我的经验 VS 并不总是正确地重新加载它)
  • 这不会预编译,只会验证页面。
【解决方案2】:

正如@KennyZ 所说,ASPX/ASCX/Master/CSHtml 文件未“编译” - 无论如何都不是常规构建过程的一部分。这是因为这些文件在第一次请求时被编译成 Page 类,这是为了让网站管理员可以随时修改文件,这通常是一个好主意,尤其是在 ASPX 文件包含大量内容的情况下。

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

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

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

这里有更多可用的文档: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

【讨论】:

    猜你喜欢
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多