2015-02-06 3 views
0

Я пытаюсь создать VsPackage с настраиваемым фильтром для браузера решений. Я проследил за прохождением https://msdn.microsoft.com/en-us/library/hh966591.aspx последним, я вижу кнопку, и я могу щелкнуть ее, но фильтр никогда не применяется. И я даже не могу отлаживать его, потому что ни один метод в классе фильтра никогда не вызывается. У кого-нибудь есть опыт написания пользовательского фильтра или, возможно, у него была такая же проблема?Visual Studio 2013 Расширение Solution Explorer Filter

+0

Ваш вопрос слишком расплывчатый и трудный для ответа в его текущей форме, ему нужна работа, чтобы сосредоточиться на отдельной проблеме и показать какой-то код. – Ian

+0

Код в точности соответствует учебнику, просто скопируйте пасту и обновите манифест в соответствии с инструкциями. Я думаю, проблема может заключаться в том, что я ничего не делаю в обратном вызове команды меню. Я думал, что фильтр будет загружен автоматически при обнаружении или, скорее, автоматически подключен, используя атрибут [SolutionTreeFilterProvider (GuidList.guidFileFilterCmdSetString, (uint) (PkgCmdIDList.cmdidFilterFile))]. Если это так, я не уверен, что должен делать обработчик команд для применения фильтра. Сегодня я попытаюсь добавить некоторый релевантный код, так как у меня его нет сейчас. – user2154171

+0

Вопрос в значительной степени хорош. Я воспроизвел проблему. Я расследую. –

ответ

2

Обработчик команд не нужно ничего делать, на самом деле вы можете удалить привязку команды, фильтр связан с параметрами Guid/Id атрибута SolutionTreeFilterProvider (guid, id).

Ваш случай кажется ошибкой VS 2013, потому что в VS 2012 он работает.

Я открыл отчет об ошибке в MS Connect: 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; 
    } 
Смежные вопросы