내 처음 의도는 TFS OLAP Cube &으로 당신이 당신이 무엇을 얻었는지를 알려주는 것이 었습니다. 그런 다음 큐브가 Agent가 빌드 한 정보를 제공하지 않는다는 것을 알았습니다.
![enter image description here](https://i.stack.imgur.com/vVKtk.png)
결국 나는에 뛰어 때문에,
이
using System;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
namespace BuildDetails
{
class Program
{
static void Main()
{
TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://TFS:8080/tfs/CoLLeCtIoNNaMe"));
var buildService = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer));
IBuildDefinition buildDefinition = buildService.GetBuildDefinition("TeamProjectName", "BuildDefinitionName");
IBuildDetail[] buildDetails = buildService.QueryBuilds(buildDefinition);
foreach (var buildDetail in buildDetails)
{
Console.Write(buildDetail.BuildNumber+"\t");
Console.Write(buildDefinition.Name+"\t");
Console.Write(buildDetail.BuildAgent.Name+"\t");
Console.Write(buildDetail.Status+"\t");
Console.Write(buildDetail.StartTime+"\t");
Console.WriteLine((buildDetail.FinishTime - buildDetail.StartTime).Minutes);
}
}
}
}
이 컴파일되지 않습니다
은 그 때 나는 당신이 '는 정보를 정기적으로 인쇄 한 후 다시 작은 TFS-콘솔 응용 프로그램을 작성하는 간단한 것이라고 생각 IBuildInformationNode[]
다음과 같이 빌드 에이전트를 얻었다는 :
IBuildInformation buildInformation = buildDetail.Information;
IBuildInformationNode[] buildInformationNodes = buildInformation.Nodes;
string agentName;
try
{
agentName = buildInformationNodes[0].Children.Nodes[3].Fields["ReservedAgentName"];
}
catch
{
agentName = "Couldn't determine BuildAgent";
}
Console.Write(agentName + "\t");
당신이 실패 빌드를 처리 할 수 있도록 시도 - 캐치가 필요하다/에이전트 셀프하기 전에 중지 유혹.
이 후반 부분을 실패한 Console.Write(buildDetail.BuildAgent.Name+"\t");
의 대체품으로 사용하는 경우 콘솔 앱으로 끝내야하며 그 출력은 * .CSV 파일 &으로 파이프 될 수 있으며 Excel로 가져올 수 있습니다.
그리고 여기에 내가 간단하게 될거라고 생각하고있어! 당신의 노력에 감사드립니다. 나는 이것을 시도 할 것이다. –
그게 효과가 있지만 데이터에서 주위를 파고 마술 색인을 변경 (2,2 나를 위해 일한) ReservedAgenName 키가 정의 된 buildInformationNodes를 찾을 수 있었다. 프로그래머가 아니기 때문에 나를 도울 사람이 있습니다. 감사! –