Visual Studio 2015构建放置位置

时间:2016-02-11 17:20:21

标签: c# visual-studio tfs visual-studio-2015 visual-studio-extensions

我们公司最近将TFS更新到2015更新1.之后,名为Drop folder的上下文菜单项从已完成的构建中消失。我没有发现任何关于它以及如何把它带回来。当我在完成的构建上单击Open时,VS会打开TFS的Web版本,我强制单击菜单并手动复制删除文件夹路径。所以我决定写一个简单的扩展,将这个项目添加到菜单中 一些谷歌搜索带我到this page。但似乎示例代码很老,在VS2015中不起作用:

IVsTeamFoundationBuild vsTfBuild = (IVsTeamFoundationBuild)GetService(typeof(IVsTeamFoundationBuild));
IBuildDetail[] builds = vsTfBuild.BuildExplorer.CompletedView.SelectedBuilds;

属性SelectedBuilds始终为空。我想它与VS2010的旧窗口有关。它返回IBuildDetail接口实例的项目 所以我发现了这段代码here

var teamExplorer = (ITeamExplorer)ServiceProvider.GetService(typeof(ITeamExplorer));
var page = teamExplorer.CurrentPage;
var buildsPageExt = (IBuildsPageExt)page.GetExtensibilityService(typeof(IBuildsPageExt));
var build = buildsPageExt.SelectedBuilds[0];

此处buildIBuildModel接口的实例。它缺少DropLocation属性。

有没有办法找到所选构建的放置位置?或者也许是最新版本?

2 个答案:

答案 0 :(得分:1)

您可以在.NET client libraries for Visual Studio Team Services (and TFS)中使用 IBuildDedetail.DropLocation 。基本代码供您参考:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;

namespace BuildAPI
{
    class Program
    {
        static void Main(string[] args)
        {
            string project = "http://xxx.xxx.xxx.xxx";
            TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(project));
            IBuildServer ibs = tpc.GetService<IBuildServer>();
            var builds = ibs.QueryBuilds("TeamProjectName");
            foreach (IBuildDetail ibd in builds)
            {
                Console.WriteLine(ibd.DropLocation);
                Console.ReadLine();
            }
        }
    }
}

答案 1 :(得分:0)

因此,在深入研究TFS API后,我最终解决了这个问题。

GROUP BY