扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:MSDN 来源:MSDN 2007年9月2日
关键字:
图 4 使用 aspnet_compiler.exe 进行二进制部署 |
图 4 显示使用二进制部署选项对 aspnet_compiler.exe 实用工具的调用,以及针对部署目录的结果输出。请注意,该部署目录中的 .aspx 文件只是没有内容的标记文件。它们之所以位于那里,是为了确保 IIS 应用程序中 .aspx 扩展的“Check that file exists”选项进行设置后,带有终结点名称的文件可用。PrecompiledApp.config 文件用于跟踪应用程序的部署方式,以及 ASP.NET 是否需要在请求时编译任何文件。要生成“可更新的”站点,需要将一个 -u 添加到命令行,得到的 .aspx 文件将包含它们的原始内容(而不是空的标记文件)。请注意,该功能也可以通过 Visual Studio 2005 的 Build | Publish Web Site 菜单项以图形方式访问,如图 5 所示。该命令行工具和 Visual Studio 都依赖于 System.Web.Compilation 命名空间的 ClientBuildManager 类提供该功能。
图 5 Visual Studio 2005 中的 Build | Publish Web Site 工具 |
使用手边的 aspnet_compiler 实用工具,您无需担心应用程序的大体部署方式就可使其运行,因为任何站点都能以下面三种方式之一进行部署 — 全源、全二进制或可更新(二进制文件中的源代码和源代码中的 .aspx 文件)— 无需对开发中使用的页面属性或代码文件进行任何更改。这在以前的 ASP.NET 版本中是不可能的,因为您必须在开发时决定是否使用 src 属性来引用代码隐藏文件,或者预编译它们并将程序集部署到 /bin 目录。完整的二进制部署甚至不是一个选项。
程序集生成
既然编译为程序集可以在三种情况下发生(由开发人员显式进行,使用 aspnet_compiler.exe,或者在请求处理中进行),因此了解文件到程序集的映射变得更为重要。实际上,根据编写页面的方式,您实际上可以得到一个应用程序,在作为全源或全二进制部署时,该应用程序可以正常工作,但在使用可更新的切换进行部署时,却编译失败。
模型 ASP.NET 通常使用 App_Code 目录内容的单独程序集以及 global.asax 文件(如果存在),然后将每个目录中的所有 .aspx 页编译为单独的程序集。(如果同一目录中的页面是以不同语言制作的,或者它们通过 @ Reference 指令彼此依赖,则它们也可以形成单独的程序集。)用户控件和母版页通常也独立于 .aspx 页进行编译。例如,如果要在一个项目中包含 Visual Basic? 和 C# 源代码,也可以配置 App_Code 目录来创建多个程序集。在程序集创建的细节中有一些细微差别,这取决于您所选的部署模式。图 6 描述特定 Web 站点的组件,该 Web 站点基于您要使用的部署模式编译为单独的程序集。(请注意,我要忽略资源、主题和浏览器目录,因为它们不包含代码,虽然它们也编译为单独的程序集。正如前面提到的,目标程序集也因语言的不同和引用依赖项而异。)
Deployment Mode | |||
All Source | All Binary | Updatable (mixed) | |
What compiles into a unique assembly App_Code directory | App_Code directory global.asax .ascx and associated codebehind file (separate assembly for each user control) .master and associated codebehind file (separate assembly for each master page) All .aspx files and their code-behind files in a given directory (separate assembly per directory) |
App_Code directory global.asax .ascx and .master files and their associated codebehind files All .aspx files and their code-behind files in a given directory (separate assembly per directory) |
App_Code directory (D) global.asax (R) .ascx and .master files (R) codebehind files for .ascx and .master files (D) All .aspx files in a given directory (separate assembly per directory) (R) All codebehind files associated with .aspx files in a given directory (separate assembly per directory) (D) |
When it's compiled | Request time | Deployment time | (R) = Compiled at request time (D) = Compiled at deployment time |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者