Я хотел бы написать расширение Visual Studio, которое фиксирует следующую информацию, когда пользователь щелкает правой кнопкой мыши часть кода.
Определите, щелкнул ли пользователь метод, и если да, то получите имя метода
Получить полное имя класса метода, т.е. (пространство имен + имя класса)
Получить тип вывода содержащего проекта, т. Е. Библиотеку классов и т. Д.
Полное имя сборки, т.е. путь + имя
Я использую комбинацию объекта EnvDTE
и метода IVsTextManager GetActiveView()
, но не могу получить всю необходимую мне информацию. Я видел, как Test Driven делал это при запуске модульных тестов внутри Visual Studio с помощью щелчка правой кнопкой мыши, поэтому я надеюсь, что смогу добиться того же.
Единственное, что мне удалось извлечь, — это имя метода на сегодняшний день, но для этого требуется, чтобы имя метода было выбрано в среде IDE. EnvDTE
хорош для возврата имени проекта, но мне это не очень подходит.
var methodName = (EnvDTE.DTE)this.GetService(typeof(EnvDTE.DTE)).ActiveDocument.Object("").Selection.Text;
После этого, чтобы получить имя класса/пространство имен, все, что у меня есть, это ссылка на выбранную строку, то есть имя метода. Отсюда я читаю выбранный файл в активном окне и читаю назад от имени метода, чтобы попытаться найти самое последнее вхождение ключевого слова класса, а затем пространства имен. Это очень неэлегантно и неуклюже.