2

TFS 2010 でビルド定義の変更を追跡する方法はありますか? 私が話していることを確認するには、Visual Studio の [チーム エクスプローラー] > [プロジェクト名] > [ビルド] に移動してください。私が言及していることを確認するには、TFS サーバーにアクセスする必要があります。チーム エクスプローラー > ProjectName > Builds に移動したら、TFS で csproj または sln ファイルをコンパイルするためのビルド定義を作成できます。私が疑問に思っているのは、既存のものに変更を加えたり、新しいものを追加したりした場合、これらのビルド定義をバージョン管理する方法はありますか?

4

3 に答える 3

2

チームの誰かがビルド定義を変更したときに同じ問題に遭遇しました。利用可能なすべてのオプションを見つけようとしましたが、Xeam Build Definition ExtensionVS 2012 以降でのみサポートされており、いくつかの欠点があることを除いて何も見つかりませんでした。Last Modified ByおよびLast Modified Date完全な詳細を返す小さなアプリでBuild Definition、以前のバージョンと比較して何が変更されたかを見つけることができます。

Microsoft.TeamFoundation.Build.Client をインポートします

Private Const RootFolder As String = "C:\TFS Utility Reports\"

    ''' <summary>
    ''' To Get the Build Definition Details
    ''' </summary>
    ''' <param name="teamProjectName"></param>
    ''' <param name="buildDefinitionName"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetBuildDefinitionDetails(teamProjectName As String, buildDefinitionName As String) As String
        Dim buildDefinitionSummary As String = Nothing
        Dim buildDefinitionDetails As String = Nothing
        Dim reportPath As String = RootFolder & "Build Definitions\" & buildDefinitionName
        Dim buildDefinitionDetailsFileName As String = reportPath & "\" & buildDefinitionName & "_" & Date.Now.ToString(CultureInfo.CurrentCulture).Replace("/", String.Empty).Replace(":", String.Empty) & ".txt"
        Dim buildService = CType(TfsTeamProjectCollection.GetService(GetType(IBuildServer)), IBuildServer)
        Dim buildDefinition As IBuildDefinition = buildService.GetBuildDefinition(teamProjectName, buildDefinitionName)
        If buildDefinition IsNot Nothing Then
            GetAllBuildDefinitions(teamProjectName)
            buildDefinitionSummary = buildDefinition.ToString()
            UpdateFile(buildDefinitionSummary, buildDefinitionDetailsFileName, reportPath)
            If buildDefinition.Workspace IsNot Nothing Then
                buildDefinitionDetails = String.Format(CultureInfo.CurrentCulture, "Last Modified By: {0}, Last Modified Date: {1}",
                                                                                                    buildDefinition.Workspace.LastModifiedBy,
                                                                                                    buildDefinition.Workspace.LastModifiedDate)
            End If
        End If
        Return buildDefinitionDetails
    End Function


    ''' <summary>
    ''' Generate Log/Summary/Report
    ''' </summary>
    ''' <param name="lineToWrite"></param>
    ''' <param name="filePath"></param>
    ''' <param name="folderPath"></param>
    ''' <remarks></remarks>
    Private Shared Sub UpdateFile(ByVal lineToWrite As String, ByVal filePath As String, ByVal folderPath As String)
        Dim strFileName As String = String.Empty
        lineToWrite = lineToWrite.Trim()
        strFileName = filePath
        Dim di As IO.DirectoryInfo = New IO.DirectoryInfo(folderPath)
        If Not di.Exists Then
            di.Create()
        End If
        Dim streamWriter As New StreamWriter(strFileName, True, System.Text.Encoding.ASCII)
        Try
            Dim strOutput As String
            strOutput = lineToWrite.ToString
            streamWriter.WriteLine(strOutput)
        Catch ex As Exception
            Throw
        Finally
            streamWriter.Dispose()
        End Try
    End Sub
于 2014-07-23T20:38:01.797 に答える
1

ビルド定義への変更を追跡する方法はありません。ビルドする必要があるブランチ/バージョンが複数ある場合は、別のビルド定義を作成することをお勧めします。

一部のプロパティは、ビルドをキューに入れるときに設定できるため、その出力をドロップ サーバーにコピーしない CI ビルドが必要な場合はそれを使用できますが、バージョンをデプロイする場合はドロップを設定できます。ビルドをキューに入れるときのフォルダー。

TFS Power Toysでは、"Clone Build Definition" コンテキスト メニューが表示されるので、同じような設定を保持したい場合に、ビルドを簡単にコピーできます。

于 2013-08-23T13:16:52.447 に答える