2015-02-06 149 views
0

我试图用解决方案资源管理器的自定义筛选器创建VsPackage。 我跟随在https://msdn.microsoft.com/en-us/library/hh966591.aspx对后者的演练,我看到按钮,我可以点击它,但过滤器从未应用。我甚至无法调试它,因为过滤器类中没有单个方法被调用过。 有没有人有编写自定义过滤器的经验,或者只是有同样的问题?Visual Studio 2013扩展解决方案资源管理器筛选器

+0

您的问题过于模糊,很难回答它的当前形式,它需要将工作重点放在单个问题上并显示一些代码。 – Ian 2015-02-06 08:55:13

+0

该代码与本教程中的代码完全相同,只需按指示复制粘贴并更新Manifest即可。 我认为问题可能是我没有在菜单命令回调中做任何事情。我认为过滤器会在找到时自动加载,或者使用[SolutionTreeFilterProvider(GuidList.guidFileFilterCmdSetString,(uint)(PkgCmdIDList.cmdidFilterFile))]]属性自动挂钩。 如果是这样,我不确定命令处理程序必须执行什么操作才能应用过滤器。 今天晚些时候我会尝试添加一些相关的代码,因为我现在没有。 – user2154171 2015-02-06 09:06:25

+0

这个问题非常好。我已经转载了这个问题。我正在调查。 – 2015-02-14 11:24:15

回答

2

命令处理程序不需要执行任何操作,实际上您可以删除命令绑定,该过滤器通过SolutionTreeFilterProvider(guid,id)属性的Guid/Id参数进行绑定。

你的情况似乎是VS 2013的一个bug,因为在VS 2012中它可以工作。

我已经打开在MS连接错误报告:https://connect.microsoft.com/VisualStudio/feedback/details/1131606

UPDATE:这是VS 2013的文档样本中的错误,这是正确的在VS 2012:

的第一个参数的类型应该SVsServiceProvider的而不是IServiceProvider:

[ImportingConstructor] 
    public FileNameFilterProvider(**SVsServiceProvider** serviceProvider, IVsHierarchyItemCollectionProvider hierarchyCollectionProvider) 
    { 
    ServiceProvider = serviceProvider; 
    this.HierarchyCollectionProvider = hierarchyCollectionProvider; 
    } 
相关问题