轉載自:http://blog.csdn.net/ljianl/archive/2007/04/27/1587067.aspx
折騰了一個周,基於Nant的VS.NET項目每日構建終於成功了,在網上實際上有很多這樣的例子,但所集成的解決方案都比較簡單,我現在做的解決方案,有4個類庫項目和2個web項目,使用網上的資料時,編譯過程都不能成功,最後翻了不少資料,問了不少人才成功,其中主要過程參考了http://bitarray.co.uk/marc/這個博客,我的文章大部分內容就算是翻譯吧,寫出來希望對大家有用處,同時感謝給過幫助的朋友,包括coolbug的文章
<project name="TYS.Deploy" default="go">
<target name="go" depends="propertycheck,unzip,copyrequiredfiles"/>
<!--檢查必須的參數是否設置-->
<target name="propertycheck" >
<ifnot propertyexists="build.number">
<fail message="build.number 屬性沒有設置,不能進行部署" />
</ifnot>
<ifnot propertyexists="target.directory">
<fail message="target.directory 目錄沒有設置,不能進行文件複製" />
</ifnot>
</target>
<target name="unzip">
<unzip
zipfile="${build.publish}${project.name}--build-${build.number}.zip"
todir="${target.directory}" />
</target>
<target name="copyrequirefiles">
<mkdir dir="${target.directory}webctrl_client" failonerror="false" />
<mkdir dir="${target.directory}aspnet_client" failonerror="false" />
<!--複製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>
<project name="TYS.Build" default="go">
<target name="go" depends="compile,distribute"/>
<!--編譯解決方案-->
<target name="compile" >
<!--
如果項目比較簡單,如只有一層或層之間關係比較簡單,可以直接使用項目的解決方案文件
-->
<solution
solutionfile="${vss.directory}${solution.file}"
configuration="${build.configuration}"
outputdir="${build.directory}">
<webmap>
<map
url="http://localhost/DNMCCIT.TYS.WEB/DNMCCIT.TYS.WEB.csproj"
path="${vss.directory}TYS.WEBDNMCCIT.TYS.WEB.csproj"
/>
</webmap>
</solution>
</target>
<!--生成分發包-->
<target name="distribute">
<IMG src="/Images/OutliningIndicators/None.gif" _fcksavedurl=""/Images/OutliningIndicators/None.gif"" align=top
<project name="DNMCCIT.TYS" default="go">
<!-- 可配置屬性列表 -->
<!-- 主要屬性列表 -->
<property name="core.basedir" value="d:Daily_Build_Folder"/>
<property name="core.publish" value="D:inetpubwwwrootTYS"/>
<property name="core.build" value="Build"/>
<property name="core.distribution" value="Distribution"/>
<property name="core.logs" value="Logs"/>
<property name="core.documentation" value="Docs"/>
<property name="core.source" value="Source"/>
<property name="supportal.core" value="/SupportalServersupportal$files"/>
<property name="supportal.fxcop" value="${supportal.core}fxcop"/>
<property name="supportal.nunit" value="${supportal.core}nunit"/>
<property name="supportal.ndoc" value="${supportal.core}ndoc"/>
<!--項目相關信息-->
<property name="project.manager" value="[email protected]"/>
<property name="project.developer" value="[email protected]"/>
<property name="project.name" value="DNMCCIT.TYS"/>
<!--Build位置信息-->
<property name="build.configuration" value="Release"/>
<property name="build.number" value="1.0"/>
<property name="build.directory" value="${core.basedir}${core.build}${project.name}"/>
<property name="build.documentation" value="${build.directory}${core.documentation}"/>
<property name="build.logs" value="${build.directory}${core.logs}"/>
<property name="build.support" value="${core.publish}@support"/>
<property name="build.distribution" value="${core.basedir}${core.distribution}${project.name}"/>
<property name="build.publish" value="${core.publish}${project.name}"/>
<!--VSS信息-->
<property name="vss.username" value=""/>
<property name="vss.password" value=""/>
<property name="vss.dbpath" value="/t-net1vss8002TYSsrcsafe.ini"/>
<property name="vss.path" value="$/DNMCCIT.TYS/"/>
<property name="vss.directory" value="${core.basedir}${core.source}${project.name}"/>
<!--VS.NET解決方案信息-->
<property name="solution.file" value="DNMCCIT.TYS.sln"/>
<!--程序集引用信息-->
<property name="solution.assembly.1" value="DNMCCIT.TYS.Data"/>
<property name="solution.assembly.2" value="DNMCCIT.TYS.Entity"/>
<property name="solution.assembly.3" value="DNMCCIT.TYS.Logic"/>
<property name="solution.assembly.4" value="DNMCCIT.TYS.Common"/>
<property name="solution.fxcop" value="${project.name}.fxcop"/>
<!--屬性列表結束-->
<target name="go" depends="prebuild,build"/>
<target name="prebuild">
<nant buildfile="TYS.PreBuild.xml" target="go" inheritall="true"/>
</target>
<target name="build">
<nant buildfile="TYS.Build.xml" target="go" inheritall="true"/>
</target>
<target name="deploy">
<nant buildfile="TYS.Deploy.xml" target="go" inheritall="true"/>
</target>
</project>
<project name="TYS.PreBuild" default="go">
<target name="go" depends="clean,getsourcecode"/>
<target name="clean" description="Remove all files">
<delete dir="${build.directory}" failonerror="false"/>
<delete dir="${vss.directory}" failonerror="false"/>
<delete dir="${build.distribution}" failonerror="false"/>
<mkdir dir="${build.directory}" />
<mkdir dir="${build.documentation}" failonerror="false" />
<mkdir dir="${build.logs}" failonerror="false" />
<mkdir dir="${vss.directory}"/>
<mkdir dir="${build.publish}" failonerror="false" />
</target>
<!--從VSS中取得源代碼-->
<target name="getsourcecode">
<vssget
user="${vss.username}"
password="${vss.password}"
localpath="${vss.directory}"
recursive="true"
replace="true"
dbpath="${vss.dbpath}"
path="${vss.path}"
/>
</target>
</project>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1587067