项目管理实践【五】自动编译和发布网站

news/2024/5/10 15:45:17/文章来源:https://blog.csdn.net/longxin5/article/details/83641016

 

 

转自:http://www.cnblogs.com/ttzhang/archive/2008/11/10/1330321.html

 

 

 

在上一篇教程项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】 中,我们讲解了如何使用CCNET+MSBuild来自动编译项目,今天我们讲解一下怎么使用MSBuild+WebDeployment+Robocopy自动编译过和部署ASP.NET网站。
首先安装下面的三个软件:

1.MSBuild.Community.Tasks下载:
http://msbuildtasks.tigris.org/files/documents/3383/28296/MSBuild.Community.Tasks.msi

源代码:
http://msbuildtasks.tigris.org/files/documents/3383/36642/MSBuild.Community.Tasks.v1.2.0.306.zip

 2.WebDeployment下载:

For VS2005
http://download.microsoft.com/download/9/4/9/9496adc4-574e-4043-bb70-bc841e27f13c/WebDeploymentSetup.msi

For VS2008 [RTW]
http://download.microsoft.com/download/9/4/9/9496adc4-574e-4043-bb70-bc841e27f13c/WebDeploymentSetup.msi

 3.Utility Spotlight Robocopy GUI 下载:【下载后,解压后安装,Vista不用安装】
http://download.microsoft.com/download/f/d/0/fd05def7-68a1-4f71-8546-25c359cc0842/UtilitySpotlight2006_11.exe

安装完成后,就开始今天的教程了。

我们以前面教程中创建的StartKit解决方案为例子,结构如下:

在上图所示的Web项目StartKit上右键点击,然后点击Add Web Deployment Project…,如下图:

 弹出下面的窗体,分别输入部署项目名称和项目要放置的位置,如下图:

 点击OK按钮后,解决方案的结构如下图:

今天会讲到下面二个方法,上面的步骤一样,从这里开始,下面的步骤有区别。

方法一:使用WebDeployment创建虚拟目录

优点:使用简单

缺点:功能不够强大,只能部署到虚拟目录

右键点击部署项目,点击菜单中的Property Pages,如下图:

在下面的窗体中,点击左侧的Complication,在右侧的Output Folder下的文本框中输入编译后网站文件的输出路径:

 然后,点击左侧的Deploment,在右侧选中Create an IIS virtual directory for the output folder前面的CheckBox,在下面的Virtual directory name下的文本框中输入虚拟目录的名字,Replace the existing virtual directory前面的CheckBox根据实际情况确定是否选中,如下图:

 点击确定按钮,编译部署项目StartKit.csproj_deploy,编译成功后,我们打开IIS,在默认网站下可以看到虚拟目录StartKit。OK,成功了!

方法二:使用WebDeployment+MSBuild+Robocopy

优点:功能强大

缺点:配置有点麻烦

这个方法不用配置Property Pages,直接右键点击StartKit.csproj_deploy项目文件,在菜单中点击Open Project File打开部署项目文件:

修改部署项目文件为下面的内容:

 

 

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->  1 <!--Microsoft Visual Studio 2008 Web Deployment Project http://go.microsoft.com/fwlink/?LinkID=104956-->
  2 
  3 <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  4 <PropertyGroup>
  5 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  6 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  7 <ProductVersion>9.0.21022</ProductVersion>
  8 <SchemaVersion>2.0</SchemaVersion>
  9 <ProjectGuid>{00000000-0000-0000-0000-000000000000}</ProjectGuid>
 10 <SourceWebPhysicalPath>..\StartKit</SourceWebPhysicalPath>
 11 <SourceWebProject>{96E1A089-3FBB-4909-94F6-172665994449}|StartKit\StartKit.csproj</SourceWebProject>
 12 <SourceWebVirtualPath>/StartKit.csproj</SourceWebVirtualPath>
 13 <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
 14 <ProjectName>StartKit</ProjectName>
 15 <Major>1</Major>
 16 <Minor>0</Minor>
 17 <Revision>0</Revision>
 18 <VSSName>ttzhang</VSSName>
 19 <VSSPassword>123456</VSSPassword>
 20 <FtpName>anonymous</FtpName>
 21 <FtpPassword>anonymous</FtpPassword>
 22 <SmtpServerName>smtp.163.com</SmtpServerName>
 23 <FromAddress>ttzhang@163.com</FromAddress>
 24 <ToAddress>zttc@163.com</ToAddress>
 25 <MailPassword>testmail</MailPassword>
 26 </PropertyGroup>
 27 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 28 <DebugSymbols>true</DebugSymbols>
 29 <OutputPath>.\Debug</OutputPath>
 30 <EnableUpdateable>true</EnableUpdateable>
 31 <UseMerge>true</UseMerge>
 32 <SingleAssemblyName>StartKit_deploy</SingleAssemblyName>
 33 </PropertyGroup>
 34 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 35 <DebugSymbols>false</DebugSymbols>
 36 <OutputPath>.\Release</OutputPath>
 37 <EnableUpdateable>true</EnableUpdateable>
 38 <UseMerge>true</UseMerge>
 39 <SingleAssemblyName>StartKit_deploy</SingleAssemblyName>
 40 </PropertyGroup>
 41 <ItemGroup>
 42 </ItemGroup>
 43 <!--下面的ItemGroup节点可选,这个和项目文件StartKit.csproj中的内容相同-->
 44 <ItemGroup>
 45 <ProjectReference Include="..\BLL\BLL.csproj">
 46 <Project>{73A293A1-CDCC-4919-9B05-BA2531ADDB56}</Project>
 47 <Name>BLL</Name>
 48 </ProjectReference>
 49 <ProjectReference Include="..\DAL\DAL.csproj">
 50 <Project>{AFF6077D-DD2D-48A0-BFAD-051BD67A6953}</Project>
 51 <Name>DAL</Name>
 52 </ProjectReference>
 53 <ProjectReference Include="..\IBLL\IBLL.csproj">
 54 <Project>{620770BB-7A27-4585-9B97-44EEE349121D}</Project>
 55 <Name>IBLL</Name>
 56 </ProjectReference>
 57 <ProjectReference Include="..\Model\Model.csproj">
 58 <Project>{EA43EC2E-5890-4431-BD3E-5F6C090DEA3A}</Project>
 59 <Name>Model</Name>
 60 </ProjectReference>
 61 </ItemGroup>
 62 <!--引入MSBuildCommunityTasks-->
 63 <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
 64 <!--邮件发送-->
 65 <!--<Target Name="EmailTest" >
 66 <Message Text = " Mail sending"></Message>
 67 <Mail SmtpServer="$(SmtpServerName)"
 68 Subject="Test"
 69 Password="$(MailPassword)"
 70 From ="$(FromAddress)"
 71 To ="$(ToAddress)"
 72 Body="This is a test of the mail task." />
 73 </Target>-->
 74 <!--备份文件到FTP-->
 75 <!--<Target Name="Backup" DependsOnTargets="Zip" >
 76 <FtpUpload UserName="$(FtpName)"
 77 Password="$(FtpPassword)"
 78 LocalFile="$(ZipFileName)"
 79 RemoteUri="ftp://192.168.1.2/SourceBackup/$(ZipFileName)" />
 80 <OnError ExecuteTargets="HandleErrorBackup" />
 81 </Target>-->
 82 <!--备份文件到FTP失败则发送邮件-->
 83 <!--<Target Name="HandleErrorBackup">
 84 <Message Text="Backup failed" />
 85 <Mail SmtpServer="$(SmtpServerName)"
 86 To="$(ToAddress)"
 87 From="$(FromAddress)"
 88 Subject="$(ProjectName) Build failed"
 89 Body="Backup Failure: Could not finish Backup ." />
 90 </Target>-->
 91 <!--编译项目-->
 92 <Target Name="BuildProjectReferences">
 93 <MSBuild Projects="@(ProjectReference)" Targets="Build" />
 94 </Target>
 95 <!--生成压缩文件-->
 96 <Target Name="Zip">
 97 <!--时间格式-->
 98 <Time Format="yyyyMMddHHmmss">
 99 <Output TaskParameter="FormattedTime" PropertyName="buildDate"/>
100 </Time>
101 <Zip Files="@(ZipFiles)" ZipFileName="StartKit V$(Major)-$(Minor)-$(Revision)-$(buildDate).zip"/>
102 </Target>
103 <!--复制文件-->
104 <Target Name="Copy">
105 <!--停止IIS服务-->
106 <ServiceController ServiceName="w3svc" Action="Stop" />
107 <!--使用Robocopy复制编译后的文件到指定位置 /XD是要忽略的文件夹,/XF要忽略的文件类型-->
108 <Exec Command="Robocopy Debug c:\inetpub\StartKit /MIR /XD Fckeditor attachments .svn obj doc Test /XF *.zip *.wdproj *.user *.cs *.csproj" IgnoreExitCode="true" />
109 <!--启动IIS服务-->
110 <ServiceController ServiceName="w3svc" Action="Start" />
111 </Target>
112 <!--引入WebDeployment-->
113 <Import Project="$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v9.0\Microsoft.WebDeployment.targets" />
114 <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
115 Other similar extension points exist, see Microsoft.WebDeployment.targets.-->
116 <Target Name="BeforeBuild"></Target>
117 <Target Name="BeforeMerge"></Target>
118 <Target Name="AfterMerge"></Target>
119 <Target Name="AfterBuild">
120 <!--编译成功后,执行下面的Targets-->
121 <!—不想生成ZIP文件,可以注释下面ZIP的target-->
122 <CallTarget Targets="Zip"/>
123 <CallTarget Targets="Copy" />
124 <!--<CallTarget Targets="EmailTest"/>
125 <CallTarget Targets="Backup" />-->
126 </Target>
127 </Project>


 

编译部署项目成功后,打开C\inetpub\StartKit文件夹,看看是否成功复制过去了呢?好的,我去看看,哈哈,文件果然都在,OK,成功啦!

这时候,在IIS上创建一个虚拟目录或者网站,指向我们部署项目中指定的目录。上一篇我们已经将该项目添加到了CCNET中,所以以后我们每次提交代码后,MSBuild就会编译整个解决方案【当然也会编译部署项目】,如果编译成功,就会自动将最新的程序部署到我们网站上。这样就可以使网站和我们的开发实时保持同步,这只不是唯一的实现方法,其他还有很多可以实现这个功能的方法,大家可以在这里讨论和交流。

补充:
Microsoft Build Engine (MSBuild) Microsoft Visual Studio 的新的生成平台。MSBuild 在如何处理和生成软件方面是完全透明的,使开发人员能够在未安装 Visual Studio 的生成实验室环境中组织和生成产品。通过这几篇教程,我们可以看出,MSBuild的强大功能,如果希望理解更多关于MSBuild的信息,请查看这里http://msdn.microsoft.com/zh-cn/library/ms171451.aspx

如果你对我讲解的这些内容不熟悉,建议你从头开始看这个系列的教程:项目管理实践系列教程。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_813748.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传AOL将收买博客聚合网站Outside.In

网易科技讯 3月4日动静&#xff0c;据国外媒体报道&#xff0c;据业内一位知恋人士吐露&#xff0c;美国在线公司(AOL)将于美国时间往日宣布揭晓&#xff0c;该公司已收买"超当地化&#xff08;Hyper-Local&#xff09;"博客聚合网站Outside.In。眼前当今尚不分明美国…

Java版PageRank及网站收录情况查询代码

在Google这个由10的100次方得名的站点中&#xff0c;各种评估网站的算法层出不穷&#xff0c;而PageRank即是其中之一。Google的PageRank根据网站的外部链接和内部链接的数量和质量俩衡量网站的价值。PageRank背后的概念是&#xff0c;每个到页面的链接都是对该页面的一次投票&…

H标签在SEO中的应用方法

转载于:https://www.cnblogs.com/vger/archive/2011/06/27/2091456.html

把网店开到美国去--个人网店(自己制作的电子商务网站)

吾阅&#xff1a;借助支付宝等成熟线上支付工具和带独立域名的C2C网店不但多了个性化&#xff0c;而且有进一步发展壮大的可能。 所售商品也不局限于实物&#xff0c;你的摄影作品和小软件都可以找到买家。 如果你有程序设计的天赋&#xff0c;App Store绝对就比ebay强&#…

关于IIS7发布网站

用IIS7 发布网站的时候&#xff0c;出现这个错误&#xff0c;一般将这个连接池“高级设置” &#xff0c;托管管道模式&#xff0c;由Intergrated 改为Classic 类型。 转载于:https://www.cnblogs.com/withoutaword/archive/2013/01/30/2883223.html

中文域名在SEO上的威力!

吾阅&#xff1a;有待验证&#xff1b; 中文域名在SEO上的威力&#xff01; 转自&#xff1a;http://富妈妈.net/20100524/330.html 5月21日着手将博客转移到自己的中文域名&#xff1a;http://富妈妈.net。5月22日周六陪孩子&#xff0c;抽空搜索了一下&#xff0c;发现已经…

百度推出开放平台 或颠覆下载网站等六大行业

百度推出开放平台 或颠覆下载网站等六大行业 2010年08月27日07:08腾讯科技李乐东 雷建平 吾阅&#xff1a;百度的框计算&#xff1f;谁说技术没有用&#xff1f;要是搞个搜索出来&#xff0c;全国都被你统治&#xff1b; 转自&#xff1a;http://tech.qq.com/a/20100827/000115…

WordPress SEO by Yoast 插件安全绕过漏洞

漏洞名称&#xff1a;WordPress SEO by Yoast 插件安全绕过漏洞CNNVD编号&#xff1a;CNNVD-201304-177发布时间&#xff1a;2013-04-12更新时间&#xff1a;2013-04-12危害等级&#xff1a; 漏洞类型&#xff1a; 威胁类型&#xff1a;远程CVE编号&#xff1a; WordPress SEO…

bootstrap弹窗_响应式网站制作之响应式视频弹窗实现

很多网站都有视频播放的功能&#xff0c;有些视频播放需要外链出去播放&#xff0c;不太影响网站的加载和网站的使用流量&#xff0c;有些则需要到本地播放&#xff0c;极大的影响了网站的加载和流量的使用&#xff0c;而有些网站还有一系列的视频列表页&#xff0c;这样的情况…

一个使用Ruby on Rails开发LBS网站的简单实例

一个使用Ruby on Rails开发LBS网站的简单实例 cheungmine 2011-7 这几天一直在学习使用Ruby on Rails(RoR)&#xff0c;想建立一个功能全面一点的LBS(Location Based Service)网站。但是对于我这个RoR的初学者&#xff08;仅有几天时间&#xff09;来说&#xff0c;毕竟太复杂…

[网站公告]23:00-05:00阿里云SLB升级会造成4-8次每次10秒的闪断

大家好&#xff0c;阿里云将于今天夜里&#xff08;7月29日23:00-7月30日05:00&#xff09;对负载均衡服务&#xff08;SLB&#xff09;进行升级操作&#xff0c;升级期间我们使用的SLB实例会有4-8次的闪断&#xff0c;每次闪断时间10秒左右。闪断期间会造成网站不能正常访问&a…

网站安全通用防护代码(C#版本源码提供)

每一个开发者都会意识到&#xff0c;网站发布之前&#xff0c;需要进行安全检查。 那么如何拦截攻击者注入恶意代码&#xff1f;如何防御诸如跨站脚本攻击&#xff08;XSS&#xff09;、SQL注入攻击等恶意攻击行为&#xff1f; 针对目前常见的一些安全问题&#xff0c;结合目前…

网站策划方案写作、演示标准

一份成功的网站策划方案是赢得订单的重要砝码&#xff0c;如何写一份令客户心动的网站策划方案则需要下苦功夫。《网站策划方案写作、演示标准》主要分为7个部分&#xff0c;希望对您有帮助&#xff1a;1. 网站策划方案的价值——内容重点阐述了解决方案能给客户带来什么价值&a…

网站策划方案写作、演示标准

一份成功的网站策划方案是赢得订单的重要砝码&#xff0c;如何写一份令客户心动的网站策划方案则需要下苦功夫。《网站策划方案写作、演示标准》主要分为7个部分&#xff0c;希望对您有帮助&#xff1a;1. 网站策划方案的价值——内容重点阐述了解决方案能给客户带来什么价值&a…

理解 Ajax 及其工作原理,构建网站的一种有效方法

理解 Ajax 及其工作原理&#xff0c;构建网站的一种有效方法 Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成&#xff0c;这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。本文的作者是一位 Ajax 专家&#xff0c;他演示了这些技术如何协同工作 —— …

Android技术开发 必备网站及使用工具

【前言】工欲善其事&#xff0c;必先利其器。搞开发多年了&#xff0c;会收藏一些干货网站和工具&#xff0c;辅助开发&#xff0c;提高开发效率。下面一次性分享给大家。喜欢的朋友们点个赞吧。 说明&#xff1a;这些是我收藏的网站&#xff0c;感觉还是不错的&#xff0c;仅仅…

webgis本地部署之在IIS6,7中部署ASP.NET网站

阅读目录 开始查看web.config文件在IIS中创建网站IIS6 添加扩展名映射IIS6 无扩展名的映射目录的写入权限SQL SERVER的配置在IIS7中部署ASP.NET程序80端口和域名 在我的第一篇博客中&#xff0c;我发布过一个示例项目&#xff0c; 主要演示了我的我的AJAX框架和我的通用数据访问…

从外网访问内网本机的网站实现方法

这是一个比较古老的话题了。一般懂得搭建网站的朋友&#xff0c;应该都会有分享自己小站的冲动。一来可以展示自己的作品&#xff0c;二来也可以方便别人看看网站&#xff0c;提提意见。呵呵。 鉴于网上类似的详细教程真的很少&#xff0c;也许是问题太简单了吧。但仍然有不少…

关于12306网站图形验证码的猜想

以前一直以为12306的图形验证码是根据普通验证码识别规则&#xff0c;只不过是加上了变态的不清晰低像素图片而已。 然后F12查看了一下网络请求&#xff0c;它的验证码规则&#xff0c;远远不是我之前我想的那么简单的。 很久以前一直单纯的以为&#xff0c;可以通过图片的识别…