使用Web Deployment Project(WDP)部署ASP.NET网站详解

Web Deployment Project (WDP)是一个在Visual Studio外挂上去的专案类型,主要目的是提供你将现有ASP.NET Website Project (网站专案)或ASP.NET Web Application Project (网站应用程式专案)另外一种部署网站的方式,让你开发的网站在建置、封装、部署时拥有更多的选项,也让网站部署更加方便与自动化。
对于有些人来讲也许不了解 ASP.NET网站专案ASP.NET网站应用程式专案的差异,建议可参考 黑大Web Site Project vs Web Application Project文章。
若咱们有一个ASP.NET Website专案,而且但愿将网站预先编译后部署到正式主机的话,若不靠WDP咱们会用VS2008内建的Publish Web Site (发布网站)功能(以下左图),但缺点就是会输出一大堆组件,事实上对部署网站来讲是一大负担,你总不但愿每次部署网站都要砍掉全部资料再从新上传吧。
这时你就能够改用Web Deployment Projects,但与Publish Web Site的操做方式不太同样,Publish Web Site是直接将网站发布到一个目录下,但Web Deployment Projects必须先新增一个独立的WDP专案到方案中(加入方式如上右图),而后先预先设定 组件名称 (Assembly Name)与 网站建置时的输出目录
接着就能够直接编译网站或开启WDP专案的属性设定页面进行设定。
对于属性设定页面每一个栏位的说明,大多都很容易看懂,至于详细的说明各位可到 Using Web Deployment Projects with Visual Studio 2005查询,这页的说明同样适用于VS2008的开发环境。
但对于一些Property Pages的选项,有些挺实用的设定我想特别说明以下:
Configuration Properties –> Output Assemblies
在Output Assemblies分类中有四个选项,预设是第一个选项,他能够将整个网站编译成单一组件,其中包括全部页面、使用者控制项、App_Code、App_WebReferences、...等目录编译的结果。 但我比较中意第三个设定,他能够将全部跟使用者介面(UI)有关的页面程式码编译到一个组件中,其余像是App_Code、App_WebReferences、...等目录都会个别创建不一样的组件,这也意味着将来如有页面程式更新时,你只需部署相关的组件便可,减小部署时网路传输的时间。
Configuration Properties –> Deployment
在Deployment分类中的设定是我最爱的部分了,他可让你的自订许多「部署」时的情况,我先说明各参数的用途:
Enable Web.config file section replacement
        你能够在开发时用本身的web.config设定,可是在部署的时候动态替换成另外一个web.config的内容,例如你能够替换appSettings或connectionStrings的内容。
        这里能够设定WDP在进行编译/部署时(按下Build等同于部署动做),在网站专案输出根目录下的Web.config是否有哪一个区段(section)要被取代,如上图设定,你的ASP .NET专案中也必需要有appSettings_Staging.config与SQL2005_Staging.config档案才行。
         appSettings_Staging.config的内容范例以下,一个档案只能包括一个 区段的资料:        
<? xml version ="1.0"? >
< appSettings >
< add key ="test" value ="TEST123" />
< add key ="test1" value ="TEST123" />
< add key ="test2" value ="TEST123" />
< add key ="test3" value ="TEST123" />
</ appSettings >
Enforce matching section replacements
        因为你能够在开发环境自行定义appSettings的参数数量,有时后你本身加了一个参数后颇有可能会忘了将「要部署的web.config」也加上这个参数,勾选这个选项就能够避免这种人为疏失的发生。
Use external configuration source file
        若这个选项不勾选,本来的web.config内容就会依据 Enable Web.config file section replacement的设定直接替换掉内容。
        若勾选了此选项,本来web.config内的区段就会被改为用外部载入的方式宣告,例如:        
< appSettings configSource ="appSettings_Staging.config" />
Remove the App_Data folder from output location
        一般App_Data目录用来储存一些网站相关的资料,例如SQLExpress资料库或其余档案。 而这些资料一般会在不一样的执行环境有不一样的资料,例如在测试机会有测试用的资料,在正式机会有正式版的资料,一般在部署的时候不会但愿盖掉这些资料。
        若勾选此选项,在进行编译/部署时就会直接将App_Data目录整个移除,让你复制这些档案过去时不用再手动删除一遍。
Configuration
        可让你切换组态的模式,预设有Debug与Release,你还能够额外自订,例如:Staging (测试环境)。
        意思也就是说,以上的设定能够设定好几组,你只要切换不一样的模式(以下图),就能够输出不一样执行环境的部署档案,方便你将档案复制到目的主机。
                 
        你也能够透过Configuration Manager定义不一样的Configuration模式是否要编译Web Deployment Project专案,例如说你在Debug mode应该就不须要建置WDP专案(以下图示),你能够设定Release或Staging时才须要编译此专案,并自动产生部署档案:
        
除了透过Visual Studio介面的设定外,事实上你还能够自行修改Web Deployment Project的专案档( *.wdproj ),此专案档其实就是透过 MSBuild编译执行的,所以这个设定档可让你自订全部要在编译时需进行的任何自订动做。
 
举几个例子来讲:
  • 在Staging模式时,你能够修改*.wdproj自订动做将建置完的档案直接复制到Staging主机
  • 在建置以前(BeforeBuild)删除一些部署时没必要要的档案或目录(例如.svn或_svn目录)
  • 在建置完成(AfterBuild)后将全部*.js档案压缩,或将jQuery改由Google AJAX Libraries API载入
MSBuild也是另外一套超级强大的工具,对于每日建置(Daily Build)或须要开发流程自动化的人,必定要熟悉这套工具如何操做,如下是一些相关连结:
若要下载Web Deployment Projects能够参考如下网址:
说明:本文由繁体中文翻译而来,仅做我的学习之用,转载请保留原文地址。
原文地址:http://blog.miniasp.com/post/2009/01/Visual-Studio-2008-Web-Deployment-Project.aspx
相关文章
相关标签/搜索