Visual Studio 2013团队资源管理器扩展未显示



我正在尝试在Visual Studio 2013中构建团队资源管理器的扩展。我在http://31og.com/post/getting-start-with-a-team-explorer-plugin-for-vs-2013-part-3找到了博客,它通过添加导航项和页面的步骤,但当我运行项目时,我没有看到扩展。

输出中没有错误。我可以看到构造函数被调用,但是没有添加任何东西到团队资源管理器。

下面是我们当前的代码:
namespace UoA.Cecil.VsTools.WindowPanes
{
    using System;
    using System.ComponentModel;
    using System.ComponentModel.Composition;
    using System.Drawing;
    using System.Runtime.CompilerServices;
    using Microsoft.TeamFoundation.Controls;
    using Microsoft.VisualStudio.Shell;
    [TeamExplorerNavigationItem(TeamExplorerGuids.TimesheetNavigationItem, 100)]
    public class TimesheetTeamExplorerNavigationItem
        : ITeamExplorerNavigationItem
    {
        private readonly IServiceProvider serviceProvider;
        private bool isVisible;
        [ImportingConstructor]
        public TimesheetTeamExplorerNavigationItem([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider)
        {
            this.serviceProvider = serviceProvider;
        }
        public event PropertyChangedEventHandler PropertyChanged;
        public Image Image
        {
            get { return Resources.TimesheetImage; }
        }
        public bool IsVisible
        {
            get { return this.isVisible; }
            private set
            {
                this.isVisible = value;
                this.FirePropertyChanged();
            }
        }
        public string Text
        {
            get { return "Timesheet"; }
        }
        public void Dispose()
        {
        }
        public void Execute()
        {
            // Do something here
        }
        public T GetService<T>()
        {
            if (this.serviceProvider != null)
            {
                return (T)this.serviceProvider.GetService(typeof(T));
            }
            return default(T);
        }
        public void Invalidate()
        {
        }
        private void FirePropertyChanged([CallerMemberName] string propertyName = null)
        {
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}

你知道为什么会这样吗?

当您连接到Team Project时,您将能够经常看到该按钮。验证CurrentContext属性是否不为空并携带连接的TFS上下文。

或者,您还可以验证构造函数中的serviceProvider字段是否为空。

可见性通常在Invalidate方法中处理,如下所示。我已经实现了以下我的团队房间扩展。

public override void Invalidate() { if (CurrentContext != null && CurrentContext.HasCollection && CurrentContext.HasTeamProject) { IsVisible = true; } else { IsVisible = false; } }

相关内容

  • 没有找到相关文章

最新更新