私は最初に、TFS OLAP Cube &にあなたの後ろのものを取り戻す方法を説明することを目的としていました。それから、キューブは、エージェントがビルドした情報を提供していないことに気付きました。
は、その後、私はあなたが「後に再に関する情報を印刷する小さなTFS-コンソールアプリケーションを書くために、簡単なことだろうと思った:
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);
}
}
}
}
![enter image description here](https://i.stack.imgur.com/vVKtk.png)
は最終的に私がに飛び込んので、これは、コンパイルされません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");
のtry-catchが必要なので、あなたが扱うことができますが/失敗したが、エージェント-SELの前に停止したことをビルドします。
この後者の部分を失敗したConsole.Write(buildDetail.BuildAgent.Name+"\t");
の代わりに使用する場合は、出力を* .CSVファイル&にパイプしてExcelにインポートできるコンソールアプリケーションで終わらせる必要があります。
そしてここに私はそれがシンプルになると思っていた!あなたの努力に感謝します。私はこれを試してみましょう。 –
それはうまくいきましたが、私はデータ内を掘り下げて、ReserveAgenNameキーが定義されているbuildInformationNodesを見つけるために魔法のインデックスを変更しなければなりませんでした。プログラマーではないので、私を助けてくれます。ありがとう! –