Как добавить фрагменты кода в расширение редактора VSIX MEF без языковой службы

Я пытаюсь реализовать фрагменты кода с расширением редактора MEF с VS2012, я следовал пошаговому руководству «Реализация фрагментов кода» по ссылке: http://msdn.microsoft.com/en-us/library/ff926100(v=vs.110).aspx

Реализация основана на пошаговом руководстве по отображению завершения оператора. Эта функция работает нормально.

Первый раздел «Реализация фрагментов кода» — «Создание и регистрация фрагментов кода», который не работает. В конце раздела шаг 8:

Создайте и запустите проект. В экспериментальном экземпляре Visual Studio, который запускается при запуске проекта, только что зарегистрированный фрагмент должен отображаться в диспетчере фрагментов кода на языке TestSnippets.

Ошибок нет, но Менеджер фрагментов кода не отображает язык TestSnippets, и как следствие фрагментов там нет. Я застрял в этом уже несколько недель и не мог найти ресурсы, чтобы понять проблему.

Любая идея о том, как решить эту проблему, будет высоко оценена.

Спасибо


person Miguel V    schedule 03.12.2014    source источник


Ответы (1)


Я понимаю, что это не так просто, но я довольно долго возился с VSIX. Если вы хотите исправить такие проблемы, вам нужно выполнить хардкорную отладку, используя рефлектор или dotPeek.

Под отладкой я имею в виду, что вам нужно отладить построчно код фактической реализации всей сантехники MEF и того, что использует MEF.

По сути, просто узнайте, где работает «Менеджер фрагментов кода», а затем посмотрите, почему ваш язык не втягивается.

По сути, вам нужно задать вопрос:

1) Почему диспетчер фрагментов кода не отображает язык TestSnippets?

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

Таким образом я исправил довольно много проблем, и я благодарен за то, что большая часть кода написана на C#, а это означает, что можно легко пройтись по коду и посмотреть, куда идет выполнение.

person Erti-Chris Eelmaa    schedule 04.12.2014
comment
Диспетчер фрагментов кода является частью кода Visual Studio. Как вы отлаживаете код VS? - person Miguel V; 05.12.2014
comment
@МигельВ; просто скачайте рефлектор (погуглите), который позволит вам войти в любой код. Просто поставьте точку останова в свой код, и как только VisualStudio вызовет его, вы сможете перемещаться назад по стеку вызовов и ставить точки останова в коде VS. - person Erti-Chris Eelmaa; 05.12.2014