对于任何可能偶然发现这一点的人,我找到了一种可行的方法。我仍然很想知道是否有人有更清洁的解决方案。
- 导入 Microsoft.VisualStudio.Package.LanguageService.9.0(或等效)程序集。
- 实例化一个 EditorFactory
- 在 EditorFactory 实例上调用 GetLanguageService,传递项目项的扩展名(即 System.IO.Path.GetExtension(ProjectItem.Name))
- 将返回的语言服务 GUID 与已知常量进行比较。您可以在 HKEY_USERS\.DEFAULT\Software\Microsoft\VisualStudio\10.0_Config\Languages\Language Services (或等效)下从注册表中挖掘这些
以下是我发现的语言服务指南,可以帮助其他人免去查找它们的麻烦:
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-f257bd55518a78}”
XML:“20-f8a78 47b5-be1c-675b3c7f0b8e}"
注意:我发现默认情况下 JScript 语言服务被错误地映射到 HTML。