技术开发 频道

就地编译 ASP.NET Web 应用程序,提高应用程序的性能


【IT168技术文档】
  利用 ASP.NET 编译工具 (Aspnet_compiler.exe) 可以就地编译 ASP.NET Web 应用程序,也可以为部署到某个目标位置(例如成品服务器)编译 ASP.NET Web 应用程序。就地编译有助于提高应用程序的性能,因为在编译应用程序的过程中,最终用户可以避免第一次请求应用程序而导致的延迟。

  可以通过以下两种方法之一执行用于部署的编译:一种方法移除所有源文件,例如代码隐藏文件和标记文件;另一种方法保留标记文件。
Note注意

  早于 ASP.NET 2.0 版的 ASP.NET 版本中没有 ASP.NET 编译工具。
aspnet_compiler [-?] [-m metabasePath | -v virtualPath [-p physicalPath]] [[-u] [-f] [-d] [-fixednames] targetDir] [-c] [-errorstack] [-nologo] [-keyfile file | -keycontainer container ] [-aptca] [-delaysign]]



  备注

  可以通过以下两种常用方式来使用 ASP.NET 编译工具:就地编译和为部署进行的编译,后者需要指定目标输出目录。下面的几节将介绍这些方案。
就地编译应用程序

  ASP.NET 编译工具可以就地编译应用程序,也就是说,它模仿对应用程序发出多个请求的行为,从而导致进行常规编译。预编译站点的用户将不会遇到应第一次请求编译页面而导致的延迟。

  就地预编译站点时,请注意下列事项: 

  站点将保留它的文件和目录结构。 

  服务器上必须具有供此站点使用的所有编程语言的编译器。 

  如果任何文件编译失败,整个站点的编译将失败。

  还可以在向应用程序添加新的源文件之后就地重新编译应用程序。除非包括 -c 选项,否则该工具仅编译新文件和更改过的文件。
  Note注意

  编译包含嵌套应用程序的应用程序时,不会编译嵌套应用程序。必须单独编译嵌套应用程序。
为进行部署编译应用程序

  通过指定 targetDir 参数来编译应用程序以进行部署(编译到某个目标位置)。targetDir 可以是 Web 应用程序的最终位置;也可以进一步部署编译好的应用程序。

  使用 -u 选项将以下面的方式编译应用程序:可以对编译好的应用程序中的某些文件做出更改,而无需重新编译该应用程序。Aspnet_compiler.exe 区分静态和动态文件类型之间的不同,并在创建生成的应用程序时,以不同的方式对它们进行处理。

  静态文件类型是指那些没有关联的编译器或生成提供程序的文件类型,例如具有 .css、.gif、.htm、.html、.jpg、.js 等扩展名的文件。这些文件只是复制到目标位置,并且在保留的目录结构中保持它们的相对位置。

  动态文件类型是指那些具有关联的编译器或生成提供程序的文件类型,包括具有 ASP.NET 特定文件扩展名(如 .asax、.ascx、.ashx、.aspx、.browser、.master 等等)的文件。ASP.NET 编译工具从这些文件生成程序集。如果省略 -u 选项,该工具还会创建具有文件扩展名 .COMPILED 的文件,这些文件将原始源文件映射到它们的程序集。为确保保留应用程序源的目录结构,该工具在目标应用程序的相应位置中生成占位符文件。

  必须使用 -u 选项,以指示可以修改编译好的应用程序的内容。否则,将忽略后续修改或者导致运行时错误。

  下表描述了在包括 -u 选项的情况下,ASP.NET 编译工具是如何处理不同的文件类型的。
0
相关文章