http://msdn.microsoft.com/zh-cn/library/377y0s6t(VS.80).aspx
本文内容
- 预编译
- 写入预编译输出
Visual Web Developer 允许发布(publish)网站,将编译网站,并输出复制到指定的位置,如成品服务器(正式服务器)。发布完成以下任务:
- 将 App_Code 文件夹中的页、源代码等预编译到可执行输出中。
- 将可执行输出写入目标文件夹。
与简单地将网站复制到目标 Web 服务器相比,发布网站具有如下优点:
- 预编译过程能发现任何编译错误,并在配置文件中标识。
- 单独页的初始响应速度更快。若不编译,而将其复制到网站,则在第一次请求时,编译页并缓存其编译输出。
- 由于不会发布任何程序代码,从而提高安全性。
说明:发布包含对自定义组件(该组件在 GAC 中注册)的引用的应用程序时,组件将不与应用程序一起发布。
预编译
发布的第一步是预编译网站。为发布进行的预编译与就地预编译(测试网站并生成网站时发生的编译,也就是 debug 网站)稍有不同。
预编译(pre-compiler)实际执行的编译过程与通常在浏览器中请求页时发生的动态编译的编译过程相同。预编译器从页(标记和代码)产生程序集,同时还编译App_Code、App_GlobalResources、App_LocalResources 和 App_Themes 文件夹中的文件。生成(build)过程是一种测试形式,不产生可部署的输出。与此相反,发布时的预编译在指定文件夹中创建输出,可将此输出部署到成品服务器。
写入预编译输出
预编译过程完成时,得到的输出被写入您指定的文件夹中。可以通过使用 FTP 协议或 HTTP 协议,将输出写入(传到)任何在文件系统中可以访问的文件夹。
说明:发布过程只部署您的网站文件夹或子文件夹中的文件。而不部署 Machine.config 文件。因此,目标 Web 服务器的配置可能与您的配置不同,这可能会将影响应用程序的行为。
可以在测试服务器,成品服务器,或是本地计算机上指定输出文件夹。如果在测试服务器或本地指定文件夹,则可单独把输出复制到成品服务器上。如果在成品服务器上指定了文件夹,则可在一次性地预编译并部署。
说明:如果用 VS 打开一个已经预编译的网站,则将无法生成此网站。将关闭生成选项。因此,应在原始网站中编辑文件,预编译,再发布。
预编译过程的输出,包括所有代码或页的已编译程序集。如果选择允许更新预编译网站的选项,则所有 .aspx、.asmx 和 .ashx 文件的代码隐藏类将编译到程序集中,但 .aspx、.asmx 和 .ashx 文件本身,将按原样复制到目标文件夹中,以便能在部署网站后,对布局进行更改。对于可更新的预编译网站,单文件页中的代码不编译进程序集,而是作为源代码部署。
不编译静态文件,它们按原样复制到输出文件夹中。静态文件包括图形、.htm 或 .html 文件、文本文件等。
如果预编译期间发生错误,则将阻止网站的编译和发布。