1

TFS 2010에서 빌드 정의의 변경 사항을 추적하는 방법이 있습니까? 제가 말하는 것에 대해 보려면 Visual Studio의 'Team Explorer> ProjectName> Builds'로 이동하십시오. 제가 언급하고있는 것을보기 위해서는 TFS 서버에 접근 할 필요가 있습니다. 이제 Team Explorer> ProjectName> Builds에 있으면 빌드 정의를 만들어 TFS에서 csproj 또는 sln 파일을 컴파일 할 수 있습니다. 내가 궁금한 것은, 기존 빌드를 변경하거나 새 빌드를 추가하면이 빌드 정의를 버전화할 수 있습니까?TFS 2010 추적 빌드 정의가 변경됩니까?

답변

1

빌드 정의의 변경 사항을 추적 할 수있는 방법이 없습니다. 빌드 할 필요가있는 브랜치/버전이 여러 개있는 경우 다른 빌드 정의를 만드는 것이 좋습니다.

빌드를 대기열에 넣을 때 속성 중 일부를 설정할 수 있으므로 출력을 드롭 서버에 복사하지 않는 CI 빌드를 원한다면 가질 수 있지만 버전을 배포하려는 경우 빌드를 대기열에 넣을 때 드롭 폴더를 설정할 수 있습니다.

TFS Power Toys에는 "복제 정의 빌드"컨텍스트 메뉴가있어서 비슷한 설정을 유지하려는 경우 빌드를 쉽게 복사 할 수 있습니다.

+0

안녕 데이브, 당신의 답장을 보내 주셔서 감사합니다. TFS 전동 공구를 설치했습니다. 하지만 시간이 지남에 따라 빌드 정의의 변경 사항을 추적하는 것은 내 목적을 해결하지 못합니다. – Kalyan

+0

당신은 정말로 할 수 없습니다. 정말로 원한다면 정의 프로세스 매개 변수를 XML로 정기적으로 내보내거나 비슷한 방식으로 내보낼 수 있지만 전혀 빌드 할 필요가 없습니다. – DaveShaw

2

팀원이 빌드 정의를 수정했을 때 같은 문제가 발생했지만 사용 가능한 모든 옵션을 찾지 못했지만 Xeam Build Definition Extension은 VS 2012에서만 지원됩니다. 몇 가지 단점이 있으므로 최종적으로 즉각적인 해결 방법을 찾았습니다. 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