Я новичок в создании надстроек для Visual Studio, но мне удалось создать инструмент simpe для VS2010, который немного манипулирует текстом в текущем активном окне кода. Я дошел до того, что мне нужно знать язык (VB.Net, C # или любой другой) текущего текстового представления.
Я попытался получить имя файла (чтобы я мог посмотреть расширение для определения языка), используя следующий код:
IVsTextManager txtMgr = (IVsTextManager)GetService(typeof(SVsTextManager));
int mustHaveFocus = 1;//means true
txtMgr.GetActiveView(mustHaveFocus, null, out currentTextView);
userData = currentTextView as IVsUserData;
if (userData == null)// no text view
{
Console.WriteLine("No text view is currently open");
return;
}
object pathAsObject;
Guid monikerGuid = typeof(IVsUserData).GUID;
userData.GetData(ref monikerGuid, out pathAsObject);
string docPath = (string)pathAsObject;
К сожалению, pathAsObject всегда возвращает ноль. Есть ли другой способ получить имя файла / язык?