发布网站

更新:2007 年 11 月

Visual Web Developer 允许您发布网站,这将编译网站并将输出复制到您指定的位置,如成品服务器。发布完成以下任务:

  • 将 App_Code 文件夹中的页、源代码等预编译到可执行输出中。

  • 将可执行输出写入目标文件夹。

377y0s6t.alert_note(zh-cn,VS.90).gif说明:

Visual Web Developer 速成版中未提供“发布网站”实用工具。

同简单地将网站复制到目标 Web 服务器相比,发布网站提供了以下优点:

  • 预编译过程能发现任何编译错误,并在配置文件中标识错误。

  • 单独页的初始响应速度更快,因为页已经过编译。如果不先编译页就将其复制到网站,则将在第一次请求时编译页,并缓存其编译输出。

  • 不会随网站部署任何程序代码,从而为您的文件提供了一项安全措施。您可以带标记保护发布网站,这将编译 .aspx 文件;或者不带标记保护发布网站,这将把 .aspx 文件按原样复制到网站中并允许您在部署后对其布局进行更改。

    377y0s6t.alert_note(zh-cn,VS.90).gif说明:

    发布包含对自定义组件(该组件在 GAC 中注册)的引用的应用程序时,组件将不与应用程序一起发布。有关更多信息,请参见如何:在网站中添加对某个 .NET 或 COM 组件的引用

有关更多信息,请参见 ASP.NET 预编译概述

预编译

发布的第一步是预编译网站。为发布进行预编译与就地预编译(在 Visual Web Developer 中称为生成)稍有不同。预编译实际执行的编译过程与通常在浏览器中请求页时发生的动态编译的编译过程相同。预编译器从页产生程序集,包括标记和代码。它同时还编译 App_Code、App_GlobalResources、App_LocalResources 和 App_Themes 文件夹中的文件。

可以同时编译单文件 ASP.NET 页和代码隐藏页。有关这两种模型的信息,请参见 ASP.NET 网页代码模型

在预编译和生成之间选择

发布中的预编译步骤与测试网站并生成网站时发生的编译有所不同。生成编译网站或当前页及其所有依赖文件,然后运行它们。生成过程是一种测试形式,不产生可部署的输出。与此相反,发布时的预编译在指定文件夹中创建输出,您可将此输出部署到成品服务器。

写入预编译输出

预编译过程完成时,得到的输出被写入您指定的文件夹中。可以通过使用文件传输协议 (FTP) 或通过 HTTP,将输出写入任何在文件系统中可以访问的文件夹中。必须具有相应权限才能向目标网站写入。

377y0s6t.alert_note(zh-cn,VS.90).gif说明:

发布过程只部署您的网站文件夹或子文件夹中的文件。而不部署 Machine.config 文件。因此,目标 Web 服务器的配置可能与您计算机上的配置不同,这可能会将影响您的应用程序的行为。

可以在测试服务器或成品服务器上指定目标文件夹,或者可以将输出写入本地计算机上的文件夹中。如果在成品服务器上指定了文件夹,则可在一个步骤中预编译并部署。如果选择将输出写入不属于网站的文件夹中,则可在单独的步骤中把输出复制到服务器上。

377y0s6t.alert_note(zh-cn,VS.90).gif说明:

如果使用 Visual Studio 打开一个预编译的网站,则将无法生成此网站。将关闭生成选项。建议在原始网站中编辑文件,预编译该网站,然后重新发布它。

预编译过程的输出包括所有代码或页的已编译程序集。如果选择允许更新预编译网站的选项,则所有 .aspx、.asmx 和 .ashx 文件的代码隐藏类都将编译到程序集中。但 .aspx、.asmx 和 .ashx 文件本身将按原样复制到目标文件夹中,以便能在部署网站后对这些文件的布局进行更改。对于可更新的预编译网站,单文件页中的代码不编译进程序集,而是作为源代码部署。

不编译静态文件。相反,它们按原样复制到输出文件夹中。静态文件包括图形、.htm 或 .html 文件、文本文件等。

如果预编译期间发生错误,则将在**“输出”窗口及“错误列表”**窗口中向您报告。预编译期间发生的错误将阻止网站的编译和发布。

请参见

任务

演练:发布网站

概念

使用“复制网站”工具复制网站