- 浏览: 2083574 次
- 性别:
- 来自: 厦门
-
文章分类
- 全部博客 (1409)
- asp/asp.net学习 (241)
- oracle (10)
- delphi (295)
- java (27)
- pb (1)
- 每日点滴 (49)
- 学习方法 (40)
- 思想方面 (104)
- C语言 (5)
- C++ (1)
- 代码重构经验 (5)
- 软件工程 (3)
- 数据库 (99)
- 英语学习 (3)
- mysql (1)
- 该关注的网站或者网页 (42)
- 总结 (7)
- 要去做的事情 (33)
- 算法 (1)
- 网络方面 (29)
- 随感 (96)
- 操作系统 (36)
- UML (12)
- 常用工具的使用 (55)
- 脚本 (7)
- 汇编 (62)
- 数据结构 (2)
- 财务 (38)
- 语文作文 (16)
- 法律 (1)
- 股票 (88)
最新评论
-
devwang_com:
可以,学习了~~
列出文件夹下所有文件夹的树形结构--Dos命令 tree的使用 -
hvang1988:
不管用啊 frxrprt1.PreviewForm.Pare ...
fastReport预览时嵌入到别的窗体 -
00915132:
我也有这个疑问,非常 感 谢
left join加上where条件的困惑 --SQL优化 -
zhuyoulong:
学习了,高效读书
软件架构师要读的书 -
nTalgar:
非常感谢分享!
Application.ProcessMessages用法:
转自: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 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打开部署项目文件:
修改部署项目文件为下面的内容:
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

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 。
如果你对我讲解的这些内容不熟悉,建议你从头开始看这个系列的教程:项目管理实践系列教程。
发表评论
-
Excel筛选后怎样计算筛选结果的行数?
2011-09-03 10:08 2411Excel筛选后怎样计算筛选结果的行数? 摘自:http ... -
如何在百度、Google地图输入经纬度进行查询?
2011-04-21 10:24 16560问题描述:如何在百度、Google地图输入经纬度进行查询? ... -
在word里 怎么样自动生成目录
2011-03-23 11:44 1638摘自:http://zhidao.baidu.co ... -
GHOST XP V10将我所有的盘都格式化并且缩成一个C盘,我所有的文件都不在了!!!
2011-03-11 18:13 1139问题描述: GHOST XP V10将我所有的盘都格式化并且缩 ... -
ddd
2010-11-05 21:24 849http://nc.mofcom.gov.cn/news/12 ... -
DotTrace工具 检查你程序的cpu分配
2010-10-09 16:11 1106网友所说: DotTrace工具来检查你程序的cpu分配 -
Word 不要显示回车换行符问题
2010-09-20 18:57 1802摘自:http://ask.lenovo.com.cn/ ... -
UltraEdit批量修改文件内容
2010-09-20 15:08 2618UltraEdit批量修改文件内容 转 ... -
匿名用户失效时--如何更改IIS默认的匿名用户
2010-09-06 09:59 1209如何更改IIS默认的匿名用户 错误描述: 您 ... -
远程桌面的全屏
2010-09-04 12:56 1435转自:http://wenwen.soso.com/z/q19 ... -
在IIS上启用Gzip压缩(HTTP压缩)
2010-09-02 14:59 1155转自:http://wjboy49.iteye.com/ ... -
怎样去掉WORD文档中的空格?
2010-08-20 11:39 1327吾阅:经验证,可行; 摘自:http://iask.s ... -
电子塑封机使用方法 SF320
2010-08-11 14:57 2831电子塑封机使用方法 ... -
文字居中的快捷键-- word Ctrl+E
2010-08-03 06:31 2385已验证: word里文字居中的快捷键 是Ctrl ... -
学正则表达式用MTrace
2010-07-28 18:01 9452010-7-28 待验证 学正则表达式 ... -
手机内存卡里出现了乱码是怎么回事
2010-07-15 16:53 3370吾阅:经验证,修复后,去掉了好多的乱码文件,但并不完全; ... -
不用升级 普通MP4也能看PDF ---PDFtoJPG
2010-07-15 11:16 1196吾阅:待验证; ------------- ... -
使用无驱固件的播放机的文件排序技巧--例如MP3内的文件播放顺序
2010-07-14 14:49 1120吾阅:待验证; ... -
word2003中,格式刷有快捷键吗
2010-07-14 13:49 1512吾阅:如果双击格式刷,可连续多次使用! - ... -
Ruby1.8.7安装全程指南
2010-07-07 15:31 3018吾阅:只差Rails没安装外,其他照着做,就可以完成;但 ...
相关推荐
3. **自动编译**:编译是将源代码转换成可执行程序的过程。一旦代码被获取,自动化脚本会调用编译器(如GCC、MSVC等),将源代码编译成目标代码。编译过程可以通过构建工具(如Make、Maven、Gradle或Visual Studio ...
在IT行业中,自动化和项目管理是两个至关重要的领域,它们对于提高工作效率,减少错误和确保项目的成功至关重要。这里,我们围绕“自动化”和“项目管理”这两个主题,结合提供的文件名称,来深入探讨相关的知识点。...
标题和描述中提到的“自动获取svn代码并且编译发布”是一种常见的持续集成(CI)实践,它涉及自动化从版本控制系统获取源代码、构建应用程序、并进行发布的过程。以下是这个流程涉及的关键知识点: 1. **Subversion ...
`VisualStudio`的提及意味着实验可能在Windows环境下进行,利用Visual Studio的强大调试和项目管理功能来辅助实验。 实验报告`编译器自动生成工具实验报告.pdf`应详细记录了实验步骤、遇到的问题、解决方案以及实验...
华为云DevCloud的DevOps项目管理实践践行了Scrum/看板、大规模敏捷、DevOps等业界先进理念,通过实施流水线、服务独立发布、微服务独立发布等手段,实现了研发作业时间的缩短,版本级编译时间的缩短,版本构建成功率...
总的来说,`springboot项目自动化发布shell脚本`是DevOps实践中一个基础但重要的环节,它能帮助开发团队高效地管理软件生命周期,提高软件的迭代速度和质量。通过学习和理解这些脚本的工作原理,开发者可以更好地...
总的来说,这个压缩包中的文档很可能详细阐述了如何设计和实现这样一个基于云计算的APP自动编译系统和管理平台,涵盖了系统架构、工作流程、技术选型、实施策略等方面,对于理解现代软件开发的先进实践具有很高的...
在IT行业中,多项目管理是常见的开发模式,特别是在大型企业级应用中。这个程序示例主要涉及了如何管理和编译多个Java项目,并将它们打包成一个可执行的JAR文件,便于部署和运行。以下是对这个主题的详细阐述: 1. ...
在持续集成的实践中,此类自动编译脚本能够显著提升团队协作效率与项目管理的自动化水平。它不仅减少了手动编译带来的重复劳动与潜在错误,还能够实时反馈代码状态,加速缺陷定位与修复过程。特别是在大型项目或频繁...
1. 提升性能:自动编译系统升级通常会带来性能提升,包括更快的编译速度、更高效的资源利用,以满足日益增长的项目规模和复杂度。 2. 新特性和功能:新版本的自动编译系统可能会引入新的特性和工具,如更灵活的配置...
实践教程则侧重于将理论知识应用于实际项目,帮助学习者更好地理解和掌握编译器的设计与实现。 首先,我们从词法分析开始。这是编译器的第一步,也称为扫描或词法分解。它将源代码分解成一系列有意义的单元,称为...
7.4.4 堆的自动管理 292 7.5 参数传递机制 292 7.5.1 值传递 293 7.5.2 引用传递 294 7.5.3 值结果传递 295 7.5.4 名字传递 295 7.6 TINY语言的运行时环境 296 练习 297 编程练习 303 注意与参考 304 第8章 代码生成...
在软件开发过程中,尤其是开源项目,automake和autoconf是两个非常重要的工具,它们帮助...通过对"automake,autoconf编译大型项目例子"的深入学习,开发者可以提升自己的项目管理技能,更好地应对复杂的软件工程挑战。
操作系统实验及课程设计中的代码自动编译系统是一个高效且实用的工具,尤其在处理大量代码审查和测试时,能够显著提升工作效率。这个系统的核心功能是自动化编译过程,通过识别和处理不同编程语言的源代码文件,使得...
- `BuildTest.bat`:被`LoadTest.bat`调用的实际自动编译脚本 #### 三、BuildTest.bat实现思路 **3.1 参数说明** - **指定编译中间过程存放的盘符**:如`D:` - **指定每日编译存放的盘符**,可以是网络盘:如`E:` ...
自动编译脚本编写指南 自动编译脚本编写指南是配置管理...自动编译脚本编写指南提供了简单编译和复杂编译两种对象的编写思路和实践例子,对于配置管理员、项目经理以及需要实施自动编译的相关人员具有重要的参考价值。
阅读并按照教程操作,可以帮助你熟练掌握这个自动化工具,提升你的项目管理能力。 总的来说,补丁、打包和编译是软件生命周期中的核心环节,而自动化的工具则能显著提升开发效率。理解这些概念并熟练运用相关工具,...
GNU Make作为项目管理工具的核心优势在于,它能够在源代码文件发生变化后自动检查时间戳,仅对那些发生变更的文件进行重新编译,从而提高了编译效率,避免了不必要的资源浪费。 GNU Make的广泛使用,尤其是其第三版...
icecream的核心设计理念是有效地管理和协调多个客户端的编译工作,它由一个或多个调度服务器(scheduler)和多个客户端(worker)组成。调度服务器负责接收编译任务,分析任务需求,然后根据客户端的负载情况将任务...
**Java第三单元项目案例——北大青鸟办公自动化管理系统** 在Java编程的学习过程中,项目实践是...通过参与这样的项目,不仅可以提升技术能力,还能锻炼团队协作和项目管理的能力,为未来的职场生涯打下坚实的基础。