免费网站建设平台,国内网站制作特点,eclipse sdk做网站,广告软文范例大全100字本文转自#xff1a;http://www.cnblogs.com/moonvan/archive/2006/11/07/552585.html 折腾了一个周,基于Nant的VS.NET项目每日构建终于成功了#xff0c;在网上实际上有很多这样的例子#xff0c;但所集成的解决方案都比较简单#xff0c;我现在做的解决方案#xff0c;有…本文转自http://www.cnblogs.com/moonvan/archive/2006/11/07/552585.html 折腾了一个周,基于Nant的VS.NET项目每日构建终于成功了在网上实际上有很多这样的例子但所集成的解决方案都比较简单我现在做的解决方案有4个类库项目和2个web项目使用网上的资料时编译过程都不能成功最后翻了不少资料问了不少人才成功其中主要过程参考了ht tp://bitarray.co.uk/marc/这个博客我的文章大部分内容就算是翻译吧写出来希望对大家有用处同时感谢给过帮助的朋友包括coolbug的文章 asp.net下开发产品的部署不同于asp中interdev开发目录和站点发布目录相同的特点在asp.net下开发目录实际上存在于VSS中必须建立对应的发布目录将编译过的文件放到其中建立应用程序的虚拟目录才能完成asp.net的发布如果使用手动方式完成这一过程则在项目多、 或者迭代式开发的多次小规模发布情况下人工工作量大且不易管理本文的.net每日构建过程可以自动的完成这一过程简化管理过程。 一、 系統需求 Win2000 以上操作系统 .NET 框架1.0以上运行平台 二、 相关工具及下载地址 1. Nant 开源工具完成.net代码自动编译及其它工具的调用必选 http://nant.sourceforge.net/builds/ 2. NantContrib 开源工具Nant的扩展组件实现Nant从VSS中获取文件功能必选 http://nantcontrib.sourceforge.net/nightly/builds/ 3. Visual Source Safe 源代码管理工具VSS6.0C以上版本必选 三. 相关软件安装 1. 安装VSS 在指定服务器上安装VSS6.0C以上版本 2. 安装NANT和NantContrib 在网上下载最新版NANT和NantContrib压缩包 解压Nant复制其中bin目录到安装地点如d:\DailyBuildTools\Nant\bin 解压NantContrib复制其中bin中所有内容到Nant的bin目录 注如果Nant和NantContrib版本不兼容需要重新编译Nant可下载源代码后查看相关文档 四. 建立.Net项目并签入到VSS中指定位置分配相应帐号除相关开发和管理人员外可为Nant分配专用帐号 五. 定义项目发布所包含的过程 Nant工具功能强大配合nant、ndoc、fxcop等工具可以完成代码编译站点发布文档生成、代码测试等功能并可反向在VSS中加入基线。 一个比较通用的发布过程如下 5.1 定义发布环境如站点发布目录源代码存放目录、文档存放目录、发布版本分发包存放目录等 5.2 项目组人员编写Nant所需要的运行文件default.build并根据环境定义其中的相关变量并提交到服务器 5.3服务器的计划任务等自动过程每天定时运行Nant 5.4 Nant清除上一版本发布时存放的文档 5.5 Nant从VSS中获取新的源代码 5.6 Nant编译从VSS中获取的源代码并将生成的dll文件存放到指定目录 5.8 生成测试报告 5.9 生成项目文档(需要源代码中加入充分的注释) 5.10 如果包含web项目Nant删除不必要的如*.cs等文件后将发布需要的*.aspx、*.resx、*.js等文件按原有目录结构复制到指定目录 5.11 向VSS中加入基线定义(需要写权限) 5.12 生成项目zip分发包并用指定格式定义分发包文件名存到指定目录 5.13 发布项目到指定目录如web站点将发布到指定虚拟目录也可由Nant来完成虚拟目录的建立过程 六. 编写Nant运行所需要的运行文件default.build 此文件要求在同一目录下有且仅有一个存在所以为统一管理所有项目可以统一使用一个default.build文件 该文件中将包含所有相关项目的vss帐户信息需要保证其安全 将些文件放在独立的目录中以便于管理 七. Default.build的编写说明 根据上面描述的通用项目发布过程一个基于Nant的项目发布过程主要为以下几步 1 清除旧版本 2 获取新版代码 3 编译 4 测试和文档生成 5 发布 因为Nant在同一目录下仅可有一个default.build的限制可将每个项目的发布过程定义为4个xml文件如对集团黄页系统 TYS.Master.xml build主文件定义各种环境变量 TYS.PreBuild.xml 项目预处理过程定义文件完成旧的文件的清除工作 TYS.Build.xml 主要构建过程定义文件完成VSS中获取编译、生成压缩包的过程并测试、生成文档的过程 TYS.Deploy.xml 项目发布到最终位置的过程定义文件 对于复杂的多层的项目build文档的编写比较复杂可以参考Nant和NantContrib的相关文档针对不同类型的项目xxx.Build.xml文件的编写可以使用不同方法对于简单项目可以使用Nant的solution任务、对于复杂的项目可以使用NantContrib的slingshot任务自动成生不过可 能需要做稍微的改动 在合理的定义变量的条件下上面4个文件中的XXX.PreBuild.xml、XXX.Build.xml、XXX.Deploy.xml实际上都是可以重用的也就是说每次项目发布项目组人员只需要提交XXX.Master.xml 八. Default.build的编写过程 下面以集团黄页系统TYS的default.build编写为例讲述具体过程先假定项目发布服务器Nant配置完成并存在以下结构的目录设置 1) 项目所在vss目录vss.directory d:\VSS\TYS 2) 项目构建工作和存放文件根目录core.basedir d:\Daily_Build_Folder 3) 项目虚拟目录位置core.publish d:\inetpub\wwwroot\tys 4) 所有项目源代码存放目录Core.build Core.basedir\source 5) 项目zip分发包存放目录core.distribution core.basedir\distribution 6) 项目日志存放目录core.logs core.basedir\logs 7) 项目文档存放目录core.documentation core.basedir\docs 1编写XXX.Master.xml ?xml version1.0 encodinggb2312? project nameDNMCCIT.TYS defaultgo !-- 可配置属性列表 -- !-- 主要属性列表 -- property namecore.basedir valued:Daily_Build_Folder/ property namecore.publish valueD:inetpubwwwrootTYS/ property namecore.build valueBuild/ property namecore.distribution valueDistribution/ property namecore.logs valueLogs/ property namecore.documentation valueDocs/ property namecore.source valueSource/ property namesupportal.core value\SupportalServersupportal$files/ property namesupportal.fxcop value${supportal.core}fxcop/ property namesupportal.nunit value${supportal.core}nunit/ property namesupportal.ndoc value${supportal.core}ndoc/ !--项目相关信息-- property nameproject.manager valuep520214gnpjvc.com.cn/ property nameproject.developer valuep520214gnpjvc.com.cn/ property nameproject.name valueDNMCCIT.TYS/ !--Build位置信息-- property namebuild.configuration valueRelease/ property namebuild.number value1.0/ property namebuild.directory value${core.basedir}${core.build}${project.name}/ property namebuild.documentation value${build.directory}${core.documentation}/ property namebuild.logs value${build.directory}${core.logs}/ property namebuild.support value${core.publish}support/ property namebuild.distribution value${core.basedir}${core.distribution}${project.name}/ property namebuild.publish value${core.publish}${project.name}/ !--VSS信息-- property namevss.username value/ property namevss.password value/ property namevss.dbpath value\t-net1vss8002TYSsrcsafe.ini/ property namevss.path value$/DNMCCIT.TYS// property namevss.directory value${core.basedir}${core.source}${project.name}/ !--VS.NET解决方案信息-- property namesolution.file valueDNMCCIT.TYS.sln/ !--程序集引用信息-- property namesolution.assembly.1 valueDNMCCIT.TYS.Data/ property namesolution.assembly.2 valueDNMCCIT.TYS.Entity/ property namesolution.assembly.3 valueDNMCCIT.TYS.Logic/ property namesolution.assembly.4 valueDNMCCIT.TYS.Common/ property namesolution.fxcop value${project.name}.fxcop/ !--属性列表结束-- target namego dependsprebuild,build/ target nameprebuild nant buildfileTYS.PreBuild.xml targetgo inheritalltrue/ /target target namebuild nant buildfileTYS.Build.xml targetgo inheritalltrue/ /target target namedeploy nant buildfileTYS.Deploy.xml targetgo inheritalltrue/ /target /project 2编写TYS.PreBuild.xml ?xml version1.0 encodingGB2312? project nameTYS.PreBuild defaultgo target namego dependsclean,getsourcecode/ target nameclean descriptionRemove all files delete dir${build.directory} failοnerrοrfalse/ delete dir${vss.directory} failοnerrοrfalse/ delete dir${build.distribution} failοnerrοrfalse/ mkdir dir${build.directory} / mkdir dir${build.documentation} failοnerrοrfalse / mkdir dir${build.logs} failοnerrοrfalse / mkdir dir${vss.directory}/ mkdir dir${build.publish} failοnerrοrfalse / /target !--从VSS中取得源代码-- target namegetsourcecode vssget user${vss.username} password${vss.password} localpath${vss.directory} recursivetrue replacetrue dbpath${vss.dbpath} path${vss.path} / /target /project 这个文件实际上是通用的对所有项目基本相同 3 编写TYS.Build.xml文件TYS.Build.xml文件根据项目复杂程度不同而不同下面是一个只有一层且为web层的例子 ?xml version1.0 encodingGB2312? project nameTYS.Build defaultgo target namego dependscompile,distribute/ !--编译解决方案-- target namecompile !-- 如果项目比较简单如只有一层或层之间关系比较简单可以直接使用项目的解决方案文件 -- solution solutionfile${vss.directory}${solution.file} configuration${build.configuration} outputdir${build.directory} webmap map urlhttp://localhost/DNMCCIT.TYS.WEB/DNMCCIT.TYS.WEB.csproj path${vss.directory}TYS.WEBDNMCCIT.TYS.WEB.csproj / /webmap /solution /target !--生成分发包-- target namedistribute IMG src/Images/OutliningIndicators/None.gif aligntop?xml version1.0 encodingGB2312? project nameTYS.Deploy defaultgo target namego dependspropertycheck,unzip,copyrequiredfiles/ !--检查必须的参数是否设置-- target namepropertycheck ifnot propertyexistsbuild.number fail messagebuild.number 属性没有设置不能进行部署 / /ifnot ifnot propertyexiststarget.directory fail messagetarget.directory 目录没有设置不能进行文件复制 / /ifnot /target target nameunzip unzip zipfile${build.publish}${project.name}--build-${build.number}.zip todir${target.directory} / /target target namecopyrequirefiles mkdir dir${target.directory}webctrl_client failοnerrοrfalse / mkdir dir${target.directory}aspnet_client failοnerrοrfalse / !--复制web assets-- copy todir${target.directory}webctrl_client fileset basedir${core.publish}webctrl_client includes name**/ /fileset /copy copy todir${target.directory}aspnet_client fileset basedir${core.publish}aspnet_client includes name**/ /fileset /copy /target /project 本例中并没有给出生成文档、日志等功能的build代码实际上这个过程应该写在TYS.Build.xml中具体运用中项目成员可根据需要参照相关文档添加 三. 自动运行过程 编写全局使用的default.build,存放到buildconfig在其中调用TYS.Master.xml内容如下 ?xml version1.0 encodinggb2312? project nameDNMCCIT defaultgo target namego dependsDNMCCIT.TYS/ target nameDNMCCIT.TYS nant buildfileTYS.Master.xml targetgo inheritalltrue/ /target /project 编写批处理程序内容可以简单的只有一行 Nant然后存放到d:\buildconfig下的makefile.bat中 在计划任务中增加自动运行计划按自定计划运行makefile.bat 四. 其它解决方案 支持.net平台、VSS做源代码管理的每日构建除了本文提到的Nant之外还有微软公司的BuildIt和MsBuild两种工具BuildIt工具因为扩展功能不强使用较少MSBuild的开发借鉴了Nant的思想很多方面使用方法和Nant类似并且也使用xml格式的build定义文件并且可以根据VS.NE T的解决方案sln文件完全自动进行build网上资料也较为丰富但MSBuild现在阶段为beta产品仅在Visual Studio2005中提供且需要.net framework2.0的支持.net1.1下的产品只有有限有人员可以得到待MSBuild正式发布后将会成为另一有力工具 五. 用于管理方便的部分自动发布方式 上面讲述的方法有一个比较大的缺点就是对于不熟悉nant的人来说编写build文件有一定难度实际上如果仅从服务器管理方便的角度完全可以使用一种比较简便的方法描述如下 a) 每个具体的开发项目在其VSS中建立BUILD项目如对黄页系统为 $DNMCCIT.TYS.BUILD b) 由开发人员不定期从开发环境将编译好的build文件以zip压缩包的方式存放到$DNMCCIT.TYS.BUILD中 c) 修改服务器的nant编译定义文件TYS.DeployZip.xml过程仅为从VSS中取得DNMCCIT.TYS.BUILD.zip并在服务器上解压并释放到指定的目的目录 此时的default.build将只调用TYS.DeployZip.xml即可代码如下 Default.build ?xml version1.0 encodinggb2312? project nameDNMCCIT defaultgo target namego dependsDNMCCIT.TYS/ target nameDNMCCIT.TYS nant buildfileTYS.DeployZip.xml targetgo inheritalltrue/ /target /project TYS.DeployZip.xml ?xml version1.0 encodingGB2312? project nameTYS.Deploy defaultgo property namecore.basedir valued:\Daily_Build_Folder\/ property namecore.publish valueD:\inetpub\wwwroot\TYS\/ property namecore.build valueBuild\/ !--项目相关信息-- property nameproject.manager value/ property nameproject.developer value/ property nameproject.name valueDNMCCIT.TYS/ !--Build位置信息-- property namebuild.directory value${core.basedir}${core.build}${project.name}\/ !--VSS信息-- property namevss.username valueaaaa/ property namevss.password value/ property namevss.dbpath value\\t-net1\vss\8002TYS\srcsafe.ini/ property namevss.path value$/DNMCCIT.TYS.BUILD// property namevss.directory valueD:\inetpub\wwwroot\TYS\/ target namego dependsclean,getzip,unzip/ target nameclean descriptionRemove all files delete failοnerrοrfalse fileset include name${core.publish}** / include name${build.directory} / /fileset /delete /target !--从VSS中取得源代码-- target namegetzip vssget user${vss.username} password${vss.password} localpath${build.directory} recursivetrue replacetrue dbpath${vss.dbpath} path${vss.path} / /target target nameunzip unzip zipfile${build.directory}${project.name}.BUILD.zip todir${core.publish} / /target target namecopyrequirefiles mkdir dir${target.directory}webctrl_client failοnerrοrfalse / mkdir dir${target.directory}aspnet_client failοnerrοrfalse / !--复制web assets-- copy todir${target.directory}webctrl_client fileset basedir${core.publish}\webctrl_client\ includes name**/ /fileset /copy copy todir${target.directory}aspnet_client fileset basedir${core.publish}\aspnet_client\ includes name**/ /fileset /copy /target /project 注不知怎么弄的上次发的内容没发完xml内容怎么变成图片了现在补上转载于:https://www.cnblogs.com/freeliver54/archive/2013/01/22/2872074.html