17

1つのxmlファイルに複数のターゲットを設定しました。すべてのターゲットが実行されることを期待していますが、最初のターゲットのみが実行されます。

これは、iamが実行しようとしていることの簡略化されたバージョンです。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="T1">
    <Copy SourceFiles="c:\temp\a.txt" DestinationFolder="C:\temp2\" />    
  </Target>
  <Target Name="T2">
    <Copy SourceFiles="c:\temp\b.txt" DestinationFolder="C:\temp2\" />    
  </Target>
</Project>

TeamCity CIサーバーからビルドを実行していて、ログがプロセス終了コード:0を報告します。

なぜそれがT2を実行しないのか誰かが何か考えを持っていますか?

4

4 に答える 4

29

複数のターゲットについてMSBuildに通知する必要があります

試す

<Target Name="Build" DependsOnTargets="T1; T2">
</Target>
于 2009-07-11T04:04:14.083 に答える
19

MSBuildを使用すると、デフォルトのターゲットを定義でき、ターゲット間の依存関係を定義できます。デフォルトが定義されていない場合は、最初に見つかったものを実行します。DefaultTargetsを使用すると、複数を呼び出すことができます。

<Project DefaultTargets="T1;T2">

ターゲットは、明確に定義された1つのステップすべてを実行する必要があります。たとえば、Cleanターゲットは、プロジェクトのクリーンアップに必要なすべてのファイルとフォルダーを削除します。コンパイルすると、すべてのDLLなどがコンパイルされます。

通常、ターゲットは独自の依存関係を宣言する必要があります。

<Target Name="CI" DependsOnTargets="T1, T2">
</Target>

それ以外の場合、ターゲットには、実行する個々のステップがすべて含まれている必要があります。

<Target Name="XX">
    <CallTarget Targets="T1"/>
    <CallTarget Targets="T2"/>
</Target>
于 2009-07-11T04:09:58.207 に答える
0

または、すべての依存ターゲットを定義するプロパティ グループを作成できます。

 <PropertyGroup>
        <BuildDependsOn>T1;T2</BuildDependsOn>
 </PropertyGroup>

次に、以下に示すように、 BuildDependsOnの値をパラメーターとして渡します。

<Target Name="Build" DependsOnTargets="@(BuildDependsOn)"/>

このアプローチにより、このプロジェクト ファイルの外部で依存リストを変更して、他の必要な手順を挿入できます。詳細については、このサイトを参照してください。

于 2011-05-26T08:28:56.010 に答える