如何设置类似于当前NAnt进程的TFS 2010工作流构建过程

时间:2012-04-18 20:00:58

标签: tfs msbuild tfs2010 workflow tfsbuild

我有一个构建过程在NAnt中,类似于以下结构(很多已被删除)。我对可以从我的NAnt脚本放入Workflow的内容以及我应该转换为MSBuild(或不是)的内容有所了解。 NAnt脚本中的各种目标将设置属性,复制文件,删除文件,调用外部进程(如编译VB6项目)。任何将此移植到工作流程的提示都将非常感激。如果您有任何疑问,请与我们联系。

<?xml ... >
<project ...>

  <!-- Get and combine paths -->
  <properties name="" value=""/>
  <properties name="" value=""/>
  <properties name="" value=""/>
  .
  .
  .
  . 

  <target name="Main">
   <!--Set Log Folder Name to include date and time.
   <mkdir dir="${LogDir}"/>

   <call target="DeleteTicketsFile"/> 
   <call target="GetTickets"/> 
   <call target="WriteTicketsToFile"/> 
   <call target="WriteProperties"/> 
   <call target="DeleteFolders" failonerror="true"/> 
   <call target="GetLatest" failonerror="true"/>
   <call target="BuildDOTNETSolution" failonerror="true"/>
   <call target="BuildVB6Projects" failonerror="true"/>
   . 
   .
   .
  <target name="BuildDOTNETSolution">

    <property name="ProjectName" value="Localcache" />

    <echo message="VCVarsAllBatFile = ${VCVarsAllBatFile}"/>
    <exec program="${VCVarsAllBatFile}"/>

    <property name="dotnetSlnFile" value="${path::combine(ProductDir, 'dot.net.sln')}"/>
    <property name="dotnetOutFile" value="${path::combine(LogDir, 'dotnet.out.txt')}"/>

    <echo message="dotnetSlnFile = ${dotnetSlnFile}"/>
    <echo message="dotnetOutFile = ${dotnetOutFile}"/>

    <delete file="${dotnetOutFile}" if="${file::exists(dotnetOutFile)}" failonerror="false"/>

    <!-- Build .NET solution in Release mode -->
    <exec program="${DevenvExe}">
      <environment>
        <variable name="COMSUPPORT" value="N"/>
        <variable name="COPYEXECENV" value="N"/>
      </environment>
      <arg value='"${dotnetSlnFile}"'/>
      <arg value='/Rebuild "Release|Any CPU"'/>
      <arg value='/Out "${dotnetOutFile}"'/>
    </exec>
  </target>

</project>

1 个答案:

答案 0 :(得分:3)

我的建议是完全替换NAnt并使用TFS Build Workflow来定制和维护您的构建。也就是说,如果您的NAnt脚本非常复杂,可能需要一些时间(特别是如果您是基于TFS Workflow的构建的新手)。我的建议是简单地让Workflow Build使用InvokeProcess Activity通过命令行(nant.exe)执行NAnt构建。然后,您可以逐步将构建的部分从NAnt脚本移动到工作流中。

例如,整个BuildDotNETSolution目标看起来没有做任何特殊的事情,所有这些都已包含在DefaultTemplate.xaml构建工作流中,您只需在构建定义中指定SolutionsToBuild参数。