在visual studio编辑器中打开文件时,通过EnvDTE.Document.Language属性返回字符串结果,如“CSharp”,“C / C ++”,“HTML”,“JScript”等,指定文件的语言。我希望能够在文件未打开时(即从ProjectItem上下文中)访问相同的语言信息。
EnvDTE.ProjectItem.FileCodeModel.Language似乎很有希望,但只给了我CSharp文件的结果。没有关于HTML,XAML等的信息。
我可以基于文件扩展进行假设,但是能够检索Visual Studio解释的语言(可能是通过语言服务)将会更加健壮。似乎信息可用,因为它存储在文档中,但我无法找到正确的API来访问它。
非常感谢任何帮助或建议。 :)
答案 0 :(得分:3)
对于任何可能偶然发现这一点的人,我发现了一种可行的方法。我仍然有兴趣听听是否有人有更清洁的解决方案。
以下是我发现的语言服务指南,可以帮助别人解决问题:
CSharp:“{694DD9B6-B865-4C5B-AD85-86356E9C88DC}”
C / C ++:“{B2F072B0-ABC1-11D0-9D62-00C04FD9DFD9}”
CSS:“{A764E898-518D-11d2-9A89-00C04F79EFC3}”
HTML:“{58E975A0-F8FE-11D2-A6AE-00104BCC7269}”
JScript:“{59E2F421-410A-4fc9-9803-1F4E79216BE8}”
XAML:“{c9164055-039b-4669-832d-f257bd5554d4}”
XML:“{f6819a78-a205-47b5-be1c-675b3c7f0b8e}”
注意:我发现默认情况下JScript语言服务错误地映射到HTML。