Web 应用程序项目与 Visual Studio 中的网站项目的异同 Web 应用程序项目与 Visual Studio 中的网站项目

要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语
本文档已存档,并且将不进行维护。

创建项目之前,必须选择合适的项目类型,原因是从一种项目类型转换到另一种项目类型并不可行。

Web 应用程序项目与 Visual Studio 中的网站项目的异同
Web 应用程序项目与 Visual Studio 中的网站项目说明

例如,因此,如果要创建ASP.NET MVC应用程序,您必须使用 Web 应用程序项目。

本主题包含以下各节:

Web 应用程序项目的情况是优先选择包括:

  • 希望能够使用Visual Studio调试器的 编辑并继续 功能。

  • 需要对与 ASP.NET 页关联的类文件中的代码运行单元测试。

  • 需要从独立类中引用与页和用户控件关联的类。

  • 要在多个web项目之间的项目依赖项。

  • 您希望编译器为整个站点创建单个程序集。

  • 您要控制为站点生成的程序集的名称和版本号。

  • 例如,您可能希望添加prebuild和postbuild步骤。

  • 需要避免将源代码放置在生产服务器上。

  • 需要使用 Visual Studio 中提供的自动化部署工具。

优先选择网站项目的情况包括:

  • 可以设置例外情况,但相对较难。)

  • 需要在 Visual Studio 中打开生产站点和使用 FTP 对其进行实时更新。

  • 不希望必须显式编译项目才能部署项目。

  • 如果预编译站点,您希望编译器为站点创建多个程序集,可以是每个页面或用户控件一个程序集,也可以是每个文件夹一个或多个程序集。

  • 您希望能够通过仅将新版本复制到生产服务器,或通过在生产服务器上直接编辑文件来更新生产中的各个文件。

  • 如果预编译站点,您希望能够更新各 ASP.NET 网页(.aspx文件),而无需重新编译整个网站。

  • 您希望在生产服务器上保留源代码,以便用作附加备份副本。

下表总结了主要差异。

 

区域

Web 应用程序项目

网站项目

项目文件结构

Visual Studio 项目文件(.csproj 或 .vbproj)存储有关项目的信息,如项目中包含的文件列表和项目间的任何引用。

文件夹结构中的所有文件自动包含在站点中。

编译

  • 在用于开发或源代码控制的计算机上显式编译源代码。

  • 默认情况下,编译代码文件(不包括 .aspx 和 .ascx 文件)会生成一个程序集。

  • 源代码通常是在站点安装或更新后首次收到请求时在服务器上通过 ASP.NET 动态(自动)进行编译的。

    可以预编译站点(在开发计算机或服务器上预先编译)。

  • 默认情况下,编译会生成多个程序集。

命名空间

默认情况下,将显式命名空间添加到页面、控件和类中。

默认情况下,不将显式命名空间添加到页面、控件和类中,但您可以手动添加它们。

部署

  • 程序集通过编译应用程序生成。

  • Visual Studio提供与集成的Web部署工具(IIS web部署工具)可以自动执行许多部署任务。

  • 您将应用程序源文件复制到已安装 IIS 的计算机上。

  • 如果在开发计算机上预编译站点,您可以将通过编译产生的程序集复制到 IIS 服务器。

  • Visual Studio提供用于部署的工具,但是,它们不工具自动执行的部署任务可用于 Web 应用程序项目。

这使得可以指定哪些文件中或在生成过程中,将该文件编译的项目中排除,和。

如果要从生成中排除某些文件,必须从网站项目文件夹中移除文件或将其文件扩展名更改为不由IIS编译和提供的扩展名。

使用项目文件的优点在 Web 应用程序项目如下:

  • 这在使用源代码管理储存库时尤为重要。

在网站项目中使用无项目文件的文件夹结构具有以下优点:

  • 例如,通过使用文件资源管理器中,可以将文件复制到项目中或从项目中删除它们。

(.aspx和.ascx文件进行动态编译以与网站项目类似的方式执行。)

您可以在批处理编译模式(通常为每个文件夹生成一个程序集)和固定编译模式(通常为每个页面或用户控件生成一个程序集)之间选择。

编译模型的优点 Web 应用程序项目中包括:

  • 您可以使用 MSBuild 来创建自定义批处理编译过程。

  • 指定程序集特性(如名称和版本)非常简单。

  • 但因此会失去动态编译的某些优点。)

  • 您不能从 App_Code 中的类引用页面或用户控件类。)

网站项目的编译模型具有以下优点:

  • (在 Web 应用程序项目,因此,如果任何位置存在编译错误该站点,则不能创建程序集不能测试所编译站点即使的部分。

  • 还可以直接在 Visual Studio 中打开生产 IIS 服务器上的网站,并实时更新该网站。

  • 如果未请求某个页面,则不会加载其对应的程序集。

Web 应用程序项目与 Visual Studio 中的网站项目的异同
Web 应用程序项目与 Visual Studio 中的网站项目说明

此外,如果该网站在较短的内存中的IIS服务器运行,包括单个程序集的整个站点要比对多个程序集可能使用更多的内存是必需的。

相反,部署网站项目,通常将项目源文件复制到IIS服务器。

部署策略的优点 Web 应用程序项目中包括:

  • 不过,在这种情况下,会失去轻松更新站点的某些好处。)

  • 这些工具对于网站项目不可用。

网站项目部署策略的优点的包括:

  • (因为 Web 应用程序项目的代码文件编译成单个程序集文件,则必须部署整个站点即使进行少量更改,因此,除非更改是针对.aspx或.ascx文件。)