Я пытался создать расширение, которое выделяет для меня определенные номера строк в Visual Studio на полях.
Мне удалось получить свою маркировку на полях, используя предопределенный номер строки, но для правильной работы мне нужно знать, что такое полное имя текущего документа (путь и имя файла)
После долгих поисков я понял, как это сделать с примером кода (который не идеален)
DTE2 dte = (DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.15.0");
var activeDocument = dte.ActiveDocument;
var docName = activeDocument.Name;
var docFullName = activeDocument.FullName;
Теперь я знаю проблемы здесь
- это для конкретной версии, основанной на тексте
- нет возможности выбрать экземпляр (при запуске более одного VS)
- Кажется, это очень медленно
У меня есть ощущение, что я должен делать это с атрибутами MEF, но примеры документов MS настолько просты, что они не работают для меня. Я также просмотрел несколько вопросов SO, и я просто не могу заставить их работать. В основном говорят о Services
.. которого у меня нет и я понятия не имею как его получить.
В остальной части моего кода используется SnapshotSpans
, как в примере. /a>, что отлично, если вам НЕ нужно знать имя файла.
Я никогда не занимался разработкой расширений. Пожалуйста, помогите мне сделать это правильно.