5

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

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

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

4

3 回答 3

7

有一个MSBuildMSBuild 任务

于 2009-07-31T15:43:53.330 回答
0

在 MSBuild 4.0 中,一个选项可能是将 3 个项目文件有条件地导入您的一键部署 MSBuild 脚本:

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

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

然后在您希望在已导入的单独项目文件中运行的目标上使用AfterTargets 功能:

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

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

于 2012-08-21T22:58:21.233 回答
-1

我没有使用 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>
于 2009-07-31T16:01:23.297 回答