1

現在、ビルドの AfterBuild イベントに一連のコマンドを追加しようとしています。コマンドは次のとおりです。

  1. ..\Binaries\Latest\$(ConfigurationName)\ のチェックアウト ファイル
  2. ビルド出力を ..\Binaries\Latest\$(ConfigurationName)\ にコピーします
  3. ファイルを ..\Binaries\Latest\$(ConfigurationName)\ にチェックインします

私のプロジェクトファイルで定義されたセクションは次のようになります

  <Target Name="AfterBuild">
    <PropertyGroup>
      <TF>"$(VS100COMNTOOLS)..\IDE\tf.exe"</TF>
    </PropertyGroup>
    <!-- include the Challenges dll and config -->
    <ItemGroup>
      <UtilityDLLs Include="$(OutDir)\*.*" />
    </ItemGroup>    
    <!-- Automticly checkout files -->
    <Exec Condition=" '$(BuildingInsideVisualStudio)' == 'false' " Command="$(TF) checkout /noprompt /recursive $(SolutionDir)..\Binaries\Latest\$(ConfigurationName)\">       
    </Exec>    
    <!-- copy the file to features build output-->
    <Copy Condition=" '$(BuildingInsideVisualStudio)' == 'false' " ContinueOnError="true" OverwriteReadOnlyFiles="true" SourceFiles="@(UtilityDLLs)" DestinationFolder="$(SolutionDir)..\Binaries\Latest\$(ConfigurationName)\" />
    <!-- Automatically checkin files -->
    <Exec Condition=" '$(BuildingInsideVisualStudio)' == 'false' " Command="$(TF) checkin /noprompt /recursive /comment:"COMMENT HERE" $(SolutionDir)..\Binaries\Latest\$(ConfigurationName)\">
    </Exec>    
  </Target>

最後のコマンドでは、/comment:"COMMENT HERE" のオプションが表示されます。

「COMMENT HERE」を、最初のチェックインを行った開発者のコ​​メントを含む MSBUILD または TFS プロパティに置き換えたいと思います。これはオプションですか?もしそうなら、どうすればこれを達成できますか?

Common MSBuild Project Propertiesで見つけられませんでした

推敲

あまり多くの情報を漏らさずに、私が達成しようとしていることについて詳しく説明させてください。私たちの TFS 構造は本質的に次のようにレイアウトされています

  • トランクコア
    • ライブラリ1
    • Library2
    • Library3
  • トランクウェブ
    • CoreBinaries
  • トランクAPI
    • CoreBinaries

開発者が変更を /trunkCore/Library# にチェックインすると、ビルドが開始され、結果のバイナリが /trunkWeb/CoreBinaries と /trunkAPI/CoreBinaries に自動的にチェックインされます。チェックインは、Library1、Library2、および Library3 の csproj ファイル (上記参照) で定義した AfterBuild 構成設定の結果として発生します。

最初のコード チェックインとバイナリのチェックインは、2 つの別個のチェックインです。「バイナリの自動チェックイン」のような定型文を使用する代わりに、自動チェックインのチェックイン ノートで元のコード チェックインのコメントを参照したいと思います。そうすることで、CoreBinaries ディレクトリ内のバイナリの履歴を表示するときに、より明確になります。これは絶対に必要というわけではありませんが、あると絶対にいいでしょう。

4

1 に答える 1

4

チェックインとビルドは 1 対 1 ではありません。手動でキューに入れられたビルドに関連するチェックインが存在しないか、スケジュールされたビルドまたはローリング ビルドに複数のチェックインが存在する可能性があります。

カスタム タスクを追加するか、カスタム実行可能ファイルを呼び出す必要がありますが、ゲート チェックインを使用していない限り (チェックインは技術的にはビルド後まで行われないため)、すべてのクエリを実行できるはずです。コメントをチェックインして、必要なものを入手してください。

var changesetSummaries = InformationNodeConverters.GetAssociatedChangesets(IBuildDetail);
foreach(var changesetSummary in changesetSummaries) {
  changesetSummary.Comment....
}
于 2011-11-26T08:42:31.403 に答える