visual-studio - TFS 2010 跟踪构建定义更改?

标签 visual-studio msbuild team-explorer build-definition

有没有办法跟踪 TFS 2010 中构建定义的更改?请转到 Visual Studio 中的“Team Explorer > ProjectName > Builds”来查看我在说什么。您需要访问 TFS 服务器才能看到我所指的内容。现在,进入 Team Explorer> ProjectName > Builds 后,您可以创建一个构建定义来编译 TFS 上的 csproj 或 sln 文件。我想知道的是,如果我对现有的构建定义进行任何更改或添加新的定义,是否有一种方法可以对这些构建定义进行版本控制?

最佳答案

当团队中的某人修改构建定义时,我遇到了同样的问题,我试图找到所有可用的选项,但没有找到除了仅支持 VS 2012 及以上版本的 Xeam Build Definition Extension 之外的选项有一些缺点,所以最后为了立即解决问题,我编写了一个小应用程序,它返回Last Modified ByLast 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

关于visual-studio - TFS 2010 跟踪构建定义更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18365994/

相关文章:

c++ - 程序在 Visual Studio 调试器中挂起

c# - 我想在一段时间后拆分一个字符串并将该句子放在一个单独的行上

c# - 是否可以在运行时不验证 ASHX 语法错误?

msbuild - Azure DevOps + LibMan + UNPKG 间歇性错误 LIB010 : Failed to download resource from unpkg. com

tfs - 如何发送包含 TFS 构建状态的自定义电子邮件

azure-devops - 如何刷新 Visual Studio 2017 团队资源管理器面板中的远程分支列表?

git - 如何从 Visual Studio 2015 中创建 Git 裸存储库?

c# - 连续发出多个 Web 请求的最简单方法是什么?

visual-studio - 为整个 Visual Studio 解决方案设置 WarningsAsErrors,而不仅仅是每个项目

git - 如何更改“团队资源管理器”选项卡的 "Commit All"按钮