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


要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。

翻译

英语

本文档已存档,并且将不进行维护。

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

在Visual Studio可以创建 Web 应用程序项目 或 网站项目。 通过选择 新建项目 或 打开项目 创建或打开一个 Web 应用程序项目在Visual Studio 文件 菜单。 通过选择 新建网站 或 打开网站 创建或打开一个网站项目在"文件"菜单。

每种项目类型各有优缺点,要选择可以满足需要的最佳项目类型,应了解各项目类型之间的差异。 创建项目之前,必须选择合适的项目类型,原因是从一种项目类型转换到另一种项目类型并不可行。

说明

在某些情况下,无法进行选择。 例如,因此,如果要创建ASP.NET MVC应用程序,您必须使用 Web 应用程序项目。

本主题包含以下各节:

方案


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

  • 希望能够使用Visual Studio调试器的 编辑并继续 功能。
  • 需要对与 ASP.NET 页关联的类文件中的代码运行单元测试。
  • 需要从独立类中引用与页和用户控件关联的类。
  • 要在多个web项目之间的项目依赖项。
  • 您希望编译器为整个站点创建单个程序集。
  • 您要控制为站点生成的程序集的名称和版本号。
  • 需要使用 MSBuild 或 Team Build 编译项目。 例如,您可能希望添加prebuild和postbuild步骤。
  • 需要避免将源代码放置在生产服务器上。
  • 需要使用 Visual Studio 中提供的自动化部署工具。

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

  • 可以在单个web项目中包含C#和Visual Basic代码。 (默认情况下, Web 应用程序编译根据项目文件的语言设置。 可以设置例外情况,但相对较难。)
  • 需要在 Visual Studio 中打开生产站点和使用 FTP 对其进行实时更新。
  • 不希望必须显式编译项目才能部署项目。
  • 如果预编译站点,您希望编译器为站点创建多个程序集,可以是每个页面或用户控件一个程序集,也可以是每个文件夹一个或多个程序集。
  • 您希望能够通过仅将新版本复制到生产服务器,或通过在生产服务器上直接编辑文件来更新生产中的各个文件。
  • 如果预编译站点,您希望能够更新各 ASP.NET 网页(.aspx文件),而无需重新编译整个网站。
  • 您希望在生产服务器上保留源代码,以便用作附加备份副本。

差异摘要


下表总结了主要差异。


区域


Web 应用程序项目


网站项目


项目文件结构


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


不存在项目文件(.csproj 或 .vbproj)。 文件夹结构中的所有文件自动包含在站点中。


编译

  • 在用于开发或源代码控制的计算机上显式编译源代码。
  • 默认情况下,编译代码文件(不包括 .aspx 和 .ascx 文件)会生成一个程序集。
  • 源代码通常是在站点安装或更新后首次收到请求时在服务器上通过 ASP.NET 动态(自动)进行编译的。

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

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

命名空间


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


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


部署

  • 将程序集复制到服务器。 程序集通过编译应用程序生成。
  • Visual Studio提供与集成的Web部署工具(IIS web部署工具)可以自动执行许多部署任务。
  • 您将应用程序源文件复制到已安装 IIS 的计算机上。
  • 如果在开发计算机上预编译站点,您可以将通过编译产生的程序集复制到 IIS 服务器。
  • Visual Studio提供用于部署的工具,但是,它们不工具自动执行的部署任务可用于 Web 应用程序项目。

项目文件结构


Web 应用程序项目使用 Visual Studio 项目文件(.csproj 或 .vbproj)来跟踪有关项目的信息。 这使得可以指定哪些文件中或在生成过程中,将该文件编译的项目中排除,和。

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

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

  • 易于暂时从站点移除文件,但仍确保不会失去对它们的跟踪,因为这些文件保留在文件夹结构中。 例如,如果页面没有为部署准备就绪,您可以暂时从生成中排除它,而无需从文件夹结构中将其删除。 您可以部署编译的程序集,然后再次将文件包括在项目中。 这在使用源代码管理储存库时尤为重要。

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

  • 您不必专门在 Visual Studio 中管理项目的结构。 例如,通过使用文件资源管理器中,可以将文件复制到项目中或从项目中删除它们。

编译


对于 Web 应用程序项目,通常生成项目在Visual Studio中或通过使用不是生产IIS服务器的计算机上的ASP.NET批编译器。 所有代码都选件类文件和独立选件类隐藏文件在项目编译为单个程序集,在 Web 应用程序项目的Bin文件夹中放置。 (.aspx和.ascx文件进行动态编译以与网站项目类似的方式执行。)

对于网站项目,您不必手动编译项目。 网站项目由ASP.NET动态通常内置(在开发计算机和生产IIS服务器上)。 您可以在批处理编译模式(通常为每个文件夹生成一个程序集)和固定编译模式(通常为每个页面或用户控件生成一个程序集)之间选择。

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

  • 您可以使用 MSBuild 来创建自定义批处理编译过程。
  • 指定程序集特性(如名称和版本)非常简单。
  • 事先编译可确保在生产服务器上编译站点期间用户无须等待。 (如果站点非常大,网站项目的动态编译可能需要花费大量时间。 动态编译在更新站点之后收到站点资源请求时发生,并且当编译所需资源时,触发编译的请求可能会被延迟。 如果延迟不可接受,则可以预编译站点。 但因此会失去动态编译的某些优点。)
  • 您可以完全控制项目文件夹结构中放置代码文件的位置,以及项目中的类互相引用的方式。 (动态编译要求在整个站点中使用的所有类的源代码必须位于 App_Code 文件夹中。 您不能从 App_Code 中的类引用页面或用户控件类。)

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

  • 您可以测试特定的页面,而不管其他页面的状态。 这是因为运行单个页面不需要成功编译整个站点,仅需编译该页面和该页面所依赖的任何组件,如 App_Code 文件夹或 Global.asax 文件中的代码。 (在 Web 应用程序项目,因此,如果任何位置存在编译错误该站点,则不能创建程序集不能测试所编译站点即使的部分。
  • 在生产中更新网站非常容易。 可以更新生产服务器上的各个源代码文件,而无需以显式方式重新编译站点。 即使由于编译错误其他文件未准备就绪,也可以更新各个为部署准备就绪的文件。 还可以直接在 Visual Studio 中打开生产 IIS 服务器上的网站,并实时更新该网站。
  • 在某些情况下,预编译为多个程序集具有性能优势。 一个典型示例是具有许多页面,并为这些页面编写了大量代码的站点。 其中大多数页面极少被请求,只有某些页面经常受到使用。 如果将这样的站点编译成多个程序集,生产服务器就可以仅加载当前请求所需的程序集。 如果未请求某个页面,则不会加载其对应的程序集。
说明

在性能上没有差异网站项目与 Web 应用程序项目之间。 唯一明显的例外就是那些已经指出的例外,在实际使用时,它们仅适用于非常大的站点。 第一个请求绑定到该网站可能需要对站点进行编译,这可能会导致延迟。 此外,如果该网站在较短的内存中的IIS服务器运行,包括单个程序集的整个站点要比对多个程序集可能使用更多的内存是必需的。

部署


若要部署 Web 应用程序项目,您复制已通过编译到IIS服务器的项目创建的程序集。 相反,部署网站项目,通常将项目源文件复制到IIS服务器。

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

  • 可以避免将源代码部署到 IIS 服务器。 在某些情况下,例如在共享承载环境中,您可能会关注对 IIS 服务器上源代码进行的未经授权的访问。 (对于网站项目,则可以预编译在开发计算机和部署所生成的程序集避免此风险而不是源代码。 不过,在这种情况下,会失去轻松更新站点的某些好处。)
  • 除将程序集或代码复制到服务器之外,部署通常还涉及其他任务。 例如,数据库脚本可能必须在生产中运行,Web.config 文件中的连接字符串可能需要针对生产服务器进行更改。 Visual Studio提供了一些如一键式发布将 Web 应用程序项目自动化其中的许多任务。 这些工具对于网站项目不可用。

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

  • 如果做少量更改到网站,您不必重新部署整个站点。 而是可以只将更改过的文件复制到生产 IIS 服务器。 另外,还可在生产服务器上直接编辑文件。 (因为 Web 应用程序项目的代码文件编译成单个程序集文件,则必须部署整个站点即使进行少量更改,因此,除非更改是针对.aspx或.ascx文件。)

原文转自:https://msdn.microsoft.com/zh-cn/library/dd547590.aspx


概念

用于 Visual Studio 和 ASP.NET 的 Web 部署内容映射

其他资源

Web Application Projects vs Web Site Projects

时间: 2024-10-17 03:56:46

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

(15)Visual Studio中使用PCL项目加入WCF WebService参考

原文 Visual Studio中使用PCL项目加入WCF WebService参考 Visual Studio中使用PCL项目加入WCF WebService参考 作者:Steven Chang 2015/01 APP在应用时经常会用到WebService服务,在Xamarin中若同时要让iOS与Android叫用WebService时, 除了分别在iOS与Android中叫用WebService外, 还可以使用PCL项目(portable library class,中文叫可携式类别库),

Visual Studio中用于ASP.NET Web项目的Web服务器

当您在 Visual Studio 中开发 Web 项目时,需要 Web 服务器才能测试或运行它们. 利用 Visual Studio,您可以使用不同的 Web 服务器进行测试,包括 IIS Express.Internet Information Services (IIS).外部主机或自定义 Web 服务器. 您可以将其中任何一种 Web 服务器用于基于文件的 Web 应用程序项目. 对于基于文件的网站项目,您可以使用 IIS Express. 本主题介绍每种 Web 服务器以及如何选择要用

Visual Studio 中用于 ASP.NET Web 项目的 Web 服务器

Visual Studio 中用于 ASP.NET Web 项目的 Web 服务器 当您在 Visual Studio 中开发 Web 项目时,需要 Web 服务器才能测试或运行它们.             利用 Visual Studio,您可以使用不同的 Web 服务器进行测试,包括 IIS Express.Internet Information Services (IIS).外部主机或自定义 Web 服务器.  您可以将其中任何一种 Web 服务器用于基于文件的 Web 应用程序项目.

在visual studio中运行C++心得

1.在visual studio中建立C++项目 (1)新建->项目->空项目 C++ (2)右击项目->添加->新建项->C++文件(.app) (3编写C++文件             #include<stdio.h>              int main()             {                int i,j;                scanf("%d%d",&i,&j);    

在Visual Studio中快速启动调试Web应用程序

原文:http://blog.csdn.net/effun/article/details/2638535 从2003到2005,Visual Studio在启动调试的功能上进行了一些改善,不过因为只是简单的一个F5键,很多人可能都不会注意.其实也已经不是很记得清楚在2003启动调试是什么样的问题,因为已经有两年多没用了,只是依稀记得每启动一次就会打开一个新的IE窗口.因为打开IE是需要耗费一点时间的,所以总在寻求一个办法减少这个过程所消耗的时间. 后来2005来了,这个问题被有效地解决了.VS

Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor

在Visual Studio中创建混合移动应用程序的一个解决方案是使用Xamarin Portable Razor工具,这是ASP.NET MVC API针对移动设备的一个轻量级实现.Xamarin编写了一个示例应用程序,演示了如何使用C#.本地API和Web技术编写iOS及Android应用. Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor,布布扣,bubuko.com

【翻译】在Visual Studio中使用Asp.Net Core MVC创建你的第一个Web API应用(一)

HTTP is not just for serving up web pages. It's also a powerful platform for building APIs that expose services and data. HTTP is simple, flexible, and ubiquitous. Almost any platform that you can think of has an HTTP library, so HTTP services can re

Visual Studio中xml文件使用app.config、web.config等的智能提示的方法

在.Net开发的过程中,有时我们需要使用Xml文件作为配置文件(基于某些情况的考虑),而不是app.config.web.config这种,但是我们在xml中配置时希望可以增加类似编辑app.confg.web.config文件时的智能提示. 没有作特殊配置时,编写xml文件如下: 从上图可以看到,没有智能提示.但是我们编辑app.config.web.config时有智能提示,比如上面的configuration,我们可能只要输入前面几个字母就会弹出智能提示,然后可以直接从下来中选择.如下图:

在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题)

在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题) 今天开始起在Chrome中调试,发现问题主要出在菜单栏(layout文件)中,google了一番,查到很多原因,不过最终解决方法倒是很简单,特此分享一下: 在C:/Windows/System32/drivers/etc里边有一个hosts文件,用记事本打开,里边最后几行原来是: # localhost name resolution is handled within DNS itsel