快速业务通道

ASP.NET 2.0中的代码隐藏和编译

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
 
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

程序集生成的另一个技巧是,使用 aspnet_compiler 的 -fixednames 选项请求将每个 .aspx 文件编译为单独的程序集,该程序集的名称跨编译器的不同调用保持一致。如果您想更新单个页面而不修改部署站点上的其他程序集,这是很有用的。它也可以为任何大型站点生成大量程序集,因此您一定要在使用该选项之前测试您的部署。

如果您觉得这比较复杂,我可以告诉您它的优点,即您无需花费大量时间考虑将哪些文件映射为单独的程序集。.aspx 文件一直在最后进行编译,并一直包括对生成的所有其他程序集的引用,因此,无论您选择哪种部署模型,它通常都会正常工作。

在部署中,可能实际影响您在页面中制作代码的方式的一个重要区别是,当使用可更新部署时编译中的分离。当部署可更新站点时,代码隐藏文件在部署之前编译为单独的程序集。从 .aspx 文件生成的类不进行编译,除非作出对目录中文件的实际请求。这与二进制部署(其中所有文件在部署之前编译)以及源部署(其中所有文件在请求时编译)形成了鲜明对比。以下这一简单的示例解释这是如何引出问题的,请考虑图 7 中带有嵌入属性的用户控件(.ascx 文件),以及一个使用该控件并从其代码隐藏类设置该属性的相关页面。

MyUserControl.ascx
<%@ Control Language="C#"%>
<script runat="server">
public string Color
{
 get { return (string)ViewState["color"] ?? "white"; }
 set { ViewState["color"] = value; }
}
protected override void OnLoad(EventArgs e)
{
 _mainPanel.BackColor = System.Drawing.Color.FromName(Color);
 base.OnLoad(e);
}
</script>
<asp:Panel runat="

为单独的程序集。(请注意,我要忽略资源、主题和浏览器目录,因为它们不包含代码,虽然它们也编译为单独的程序集。正如前面提到的,目标程序集也因语言的不同和引用依赖项而异。)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号