我在通過TFS API從Visual Studio Online項目檢索生成信息時遇到問題。我可以連接到項目,看起來,並找到預期的團隊項目集合和團隊項目,但儘管項目有兩個構建定義和一些構建,但TFS API在查詢構建時總是返回零長度的數組給我定義或構建。該項目是一個Git項目。我的生產代碼類似於我寫嘗試調試問題該測試代碼:通過TFS API從Visual Studio Online獲取生成定義
var tfsUri = new Uri("https://[my project].visualstudio.com");
var tcs = new TfsConfigurationServer(tfsUri);
var teamProjCollections = tcs
.CatalogNode
.QueryChildren(
new[] { CatalogResourceTypes.ProjectCollection },
false,
CatalogQueryOptions.None)
.Select(collectionNode => new Guid(collectionNode.Resource.Properties["InstanceId"]))
.Select(collectionId => tcs.GetTeamProjectCollection(collectionId));
var tpc = teamProjCollections
.Single(x => x.Name == @"[my project].visualstudio.com\DefaultCollection");
var newTeamProjects = tpc
.CatalogNode
.QueryChildren(
new[] { CatalogResourceTypes.TeamProject },
false,
CatalogQueryOptions.None);
var tp = newTeamProjects
.Single(x => x.Resource.DisplayName == "[team project name]");
var buildServer = tpc.GetService<IBuildServer>();
var buildDefinitions = buildServer.QueryBuildDefinitions(tp.Resource.DisplayName);
buildDefinitions
始終是一個空數組。構建的定義是肯定那裏 - 我可以使用Visual Studio連接到項目,並將它們顯示在團隊資源管理器的「構建」選項卡中。這段代碼在過去對我有用,但它總是連接到TFVC項目,而不是Git項目。有趣的是,如果我使用團隊項目集合VersionControlServer
,像這樣:
var vcs = tpc.GetService<VersionControlServer>();
var teamProjects = vcs.GetAllTeamProjects(true);
... teamProjects
始終是一個長度爲零的數組。另外,如果我嘗試通過指定非常一般的構建細節規範來獲取團隊項目集合的所有構建,則不會返回構建。
一些額外的信息:我正在使用VS Enterprise 2015 RC。我是VSO項目的管理員,並創建了團隊項目集合,團隊項目和構建定義。我推了一些代碼,並運行一些構建。通過API連接時,我以自己的身份登錄。我的憑據似乎是正確的。
因此,在試圖弄清楚這一點,我有一些問題。我需要一種不同的方法來訪問Git存儲庫嗎?也許只有通過新的TFS 2015 REST API纔有可能?也許我需要讓自己的構建在VSO項目中「可見」?
感謝。我今天要發佈更新 - 這是我創建的vNext構建定義。當我昨晚創建XAML構建定義時,我可以通過API看到它。感謝您使用新REST API版本2的提示,現在我會檢查一下。假設我需要三條代碼路徑,一個用於VSO/TFS 2015服務器,一個用於TFS 2010-2013服務器,另一個用於TFS 2005-2008服務器。 –