在为部署预编译站点时,ASP.NET 将创建布局(一种包含编译器输出的结构)。本主题描述预编译期间文件的处理方式,并对布局结构和内容进行说明。
您可以同时预编译源代码(生成程序集的所有文件,包括程序代码和资源)和标记(.aspx 文件),也可以只编译源代码。有关详细信息,请参见 ASP.NET 网站预编译概述。
预编译过程对 ASP.NET Web 应用程序中各种类型的文件执行操作。文件的处理方式各不相同,这取决于应用程序预编译只是用于部署还是用于部署和更新。
注意 |
仅针对部署预编译站点或针对部署和更新预编译站点,不会保留目标文件和子目录上的文件访问控制列表 (ACL)。例如,如果您以前预编译了某个站点并将其部署到目标位置,更改了文件的 ACL,然后再次预编译并部署该站点,则 ACL 更改将丢失。
|
下表描述了不同的文件类型,以及应用程序预编译只是用于部署时对这些文件类型所执行的操作。
文件类型 |
预编译操作 |
输出位置 |
.aspx、ascx、.master
|
生成程序集和一个指向该程序集的 .compiled 文件。原始文件保留在原位置,作为完成请求的占位符。
|
程序集和 .compiled 文件写入 Bin 文件夹中。页(去除内容的 .aspx 文件)保留在其原始位置。
|
.asmx、.ashx
|
生成程序集。原始文件保留在原位置,作为完成请求的占位符。
|
Bin 文件夹
|
App_Code 文件夹中的文件
|
生成一个或多个程序集(取决于 Web.config 设置)。
注意 |
App_Code 文件夹中的静态内容不复制到目标文件夹中。
|
|
Bin 文件夹
|
未包含在 App_Code 文件夹中的 .cs 或 .vb 文件
|
与依赖于这些文件的页或资源一起编译。
|
Bin 文件夹
|
Bin 文件夹中的现有 .dll 文件
|
按原样复制文件。
|
Bin 文件夹
|
资源 (.resx) 文件
|
对于 App_LocalResources 或 App_GlobalResources 文件夹中找到的 .resx 文件,生成一个或多个程序集以及一个区域性结构。
|
Bin 文件夹
|
App_Themes 文件夹及子文件夹中的文件
|
在目标位置生成程序集并生成指向这些程序集的 .compiled 文件。
|
Bin
|
静态文件(.htm、.html、.js、图形文件等)
|
按原样复制文件。
|
与源中结构相同。
|
浏览器定义文件
|
按原样复制文件。
注意 |
浏览器信息从计算机级的配置文件中继承,因此其行为在目标服务器上可能会有所不同。
|
|
App_Browsers
|
依赖项目
|
将依赖项目的输出生成到程序集中。
|
Bin 文件夹
|
Web.config 文件
|
按原样复制文件。
|
与源中结构相同。
|
Global.asax 文件
|
编译到程序集中。
|
Bin 文件夹
|
下表描述了不同的文件类型,以及当对应用程序进行预编译以备部署和更新时对这些文件类型所执行的操作。
文件类型 |
预编译操作 |
输出位置 |
.aspx、ascx、.master
|
对于具有代码隐藏类文件的文件,生成程序集和一个指向该程序集的 .compiled 文件。将这些文件的单文件版本原封不动地复制到目标位置。
|
程序集和 .compiled 文件写入 Bin 文件夹中。
|
.asmx、.ashx
|
按原样复制文件,但不编译。
|
与源中结构相同。
|
App_Code 文件夹中的文件
|
生成一个或多个程序集(取决于 Web.config 设置)。
注意 |
App_Code 文件夹中的静态内容不复制到目标文件夹中。
|
|
Bin 文件夹
|
未包含在 App_Code 文件夹中的 .cs 或 .vb 文件
|
与依赖于这些文件的页或资源一起编译。
|
Bin 文件夹
|
Bin 文件夹中的现有 .dll 文件
|
按原样复制文件。
|
Bin 文件夹
|
资源 (.resx) 文件
|
对于 App_GlobalResources 文件夹中的 .resx 文件,生成一个或多个程序集以及一个区域性结构。
对于 App_LocalResources 文件夹中的 .resx 文件,将它们按原样复制到输出位置的 App_LocalResources 文件夹中。
|
程序集放置在 Bin 文件夹中
|
App_Themes 文件夹及子文件夹中的文件
|
按原样复制文件。
|
与源中结构相同。
|
静态文件(.htm、.html、.js、图形文件等)
|
按原样复制文件。
|
与源中结构相同。
|
浏览器定义文件
|
按原样复制文件。
注意 |
浏览器信息从计算机级的配置文件中继承,因此其行为在目标服务器上可能会有所不同。
|
|
App_Browsers
|
依赖项目
|
将依赖项目的输出生成到程序集中。
|
Bin 文件夹
|
Web.config 文件
|
按原样复制文件。
|
与源中结构相同。
|
Global.asax 文件
|
编译到程序集中。
|
Bin 文件夹
|
.compiled 文件
对于 ASP.NET Web 应用程序中的可执行文件,编译器程序集以及文件扩展名为 .compiled 的文件。程序集名称由编译器生成。.compiled 文件不包含可执行代码。它只包含 ASP.NET 查找相应的程序集所需的信息。
在部署预编译的应用程序之后,ASP.NET 使用 Bin 文件夹中的程序集来处理请求。预编译输出包含 .aspx 或 .asmx 文件作为页占位符。占位符文件不包含任何代码。使用它们只是为了提供一种针对特定页请求调用 ASP.NET 的方式,以便可以设置文件权限来限制对页的访问。
更新部署的网站
在部署预编译的网站之后,您可以对站点中的文件进行一定更改。下表描述了不同类型的更改所造成的影响。
文件类型 |
允许的更改(仅部署) |
允许的更改(部署和更新) |
静态文件(.htm、.html、.js、图形文件等)
|
可以更改、移除或添加静态文件。如果 ASP.NET 网页引用的页或页元素已被更改或移除,可能会发生错误。
|
可以更改、移除或添加静态文件。如果 ASP.NET 网页引用的页或页元素已被更改或移除,可能会发生错误。
|
.aspx 文件
|
不允许更改现有的页。不允许添加新的 .aspx 文件。
|
您可以更改 .aspx 文件的布局和添加不需要代码的元素,例如 HTML 元素和不带有事件处理程序的 ASP.NET 服务器控件。您还可以添加新的 .aspx 文件,该文件通常在首次请求时进行编译。
|
.skin 文件
|
忽略更改和新增的 .skin 文件。
|
允许更改和新增的 .skin 文件。
|
Web.config 文件
|
允许更改,这些更改将影响 .aspx 文件的编译。忽略调试或批处理编译选项。
不允许更改配置文件属性或提供程序元素。
|
如果所做的更改不会影响站点或页的编译(包括编译器设置、信任级别和全球化),则允许进行更改。忽略影响编译或使已编译页中的行为发生变化的更改,否则在一些实例中可能会生成错误。允许其他更改。
|
浏览器定义
|
允许更改和新增文件。
|
允许更改和新增文件。
|
从资源 (.resx) 文件编译的程序集
|
可以为全局和局部资源添加新的资源程序集文件。
|
可以为全局和局部资源添加新的资源程序集文件。
|
|
请发表评论