Расширяемость Visual Studio / Поля - PullRequest
1 голос
/ 13 февраля 2011

Я пытаюсь создать маржу (через MEF) как надстройку VS. Мне нужно получить строки, которые содержат определение метода. Я обнаружил, что люди делают такие вещи, но, похоже, большинство из них - это анализ разбора. Это кажется очень плохой идеей, поскольку она, очевидно, будет работать только с теми языками, которые вы знаете, как анализировать.

В дополнении я могу получить программный доступ к документу, используя модель более высокого уровня:

var fcm = _application.ActiveDocument.ProjectItem.FileCodeModel;
var elem = fcm.CodeElementFromPoint(point, vsCMElement.vsCMElementFunction);

Как пример.

Есть ли способ сделать это из MEF, когда вы пытаетесь нарисовать поле?

Ответы [ 3 ]

1 голос
/ 25 февраля 2011

ОК, так что это может быть сделано.

Общий процесс для этого: 1) ITextBuffer -> ITextDocument (который имеет имя файла) 2) Используйте имя файла, чтобы найти элемент проекта (например: рекурсивные элементы проекта) 3) Получить FCM из предмета проекта и использовать его

0 голосов
/ 23 июля 2014

Они добавили кое-что из CodeDOM, которое могло бы помочь.Вы сможете перемещаться по дереву кода и искать текст.Вот очень простое введение: http://msdn.microsoft.com/en-us/library/y2k85ax6%28v=vs.110%29.aspx

0 голосов
/ 14 февраля 2011

Я не верю, что есть способ сделать это сейчас, не разбирая его самостоятельно.

Я думаю, что компилятор как сервис, над которым они работают для будущей версии VS, поможет в этом.

...