如何从一个MSBuild脚本调用多个MSBuild脚本

时间:2009-07-31 15:34:07

标签: deployment msbuild teamcity

我有3个MSBUild脚本用于部署, 1用于部署UI 1用于部署一些Web服务。 1用于部署后端服务。

现在我想创建一个单击部署MSBuild脚本,该脚本将调用所有上述3个脚本,这些脚本可以从TeamCity服务器执行。

那么如何从不同的MSBuild脚本中调用这三个MSBuild脚本。

3 个答案:

答案 0 :(得分:7)

答案 1 :(得分:0)

我没有使用TeamCity Server,但一种可能的替代解决方案是将三个构建脚本合并到一个脚本中。并将三个单独脚本的任务放入主构建文件中的单独目标中。因此,您需要一个包含三个目标的构建脚本,即deployUI,deployServices,deployBackend,而不是三个单独的构建脚本。未经测试的样本如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="DefaultTarget" ToolsVersion="3.5">

    <Target Name="DefaultTarget">
            <CallTarget Targets="deployUI" ContinueOnError="false"></CallTarget>
            <CallTarget Targets="deployServices" ContinueOnError="false"></CallTarget>
            <CallTarget Targets="deployBackend" ContinueOnError="false"></CallTarget> 
    </Target>

    <Target Name="deployUI">
            <!-- Put UI deployment tasks here -->
    </Target>

    <Target Name="deployServices">
            <!-- Put Services deployment tasks here -->
    </Target>

    <Target Name="deployBackend">
            <!-- Put Backend deployment tasks here -->
    </Target>
</Project>

答案 2 :(得分:0)

在MSBuild 4.0中,一个选项可能是{3}将3个项目文件导入到您的单击部署MSBuild脚本中:

<Import Project="ProjectPath1" Condition="'$(DeployUI)'!=''" />
<Import Project="ProjectPath2" Condition="'$(DeployWebServices)'!=''" />
<Import Project="ProjectPath3" Condition="'$(DeployBackendServices)'!=''" />

<Target Name="DeployTheWorld">
    <Message Text="Deploying..." />
</Target>

然后在您导入的单独项目文件中使用要运行的目标上的conditionally import

  <Target Name="DeployUI" AfterTargets="DeployTheWorld">
    <Message Text="Hello from DefaultAfterTarget"/>
  </Target>

这将使您可以灵活地从TeamCity中自定义部署。