我是为 Visual Studio 构建插件的新手,但我设法为 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 总是返回 null。有没有其他方法可以获取文件名/语言?