Visual Studio" GoTo定义"对于自定义语言?

时间:2017-11-02 08:53:19

标签: visual-studio dsl

是否有在Visual Studio 2017中实现自定义语言扩展(文本DSL)的示例,并支持" GoTo定义"? VisualStudioWorkspace似乎没有足够的灵活性来支持通用符号表(即不支持C#或VB)。

Visual Studio Code支持自定义语言的GoTo定义。

支持" GoTo定义"在Java for Visual Studio中JavaIntellisenseController.GoToSourceImpl(),似乎并没有实际解析Java符号。

Roslyn实现抽象方法Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace.TryGoToDefinition(),但此API使用特定于.NET语言的类型,如Microsoft.CodeAnalysis.ISymbol

还有其他方法,可能使用自定义Workspace类吗?

1 个答案:

答案 0 :(得分:0)

构建一个language server看起来很快就会成为从头开始在Visual Studio中构建自定义语言支持的有用替代方法。 Visual Studio正在为语言服务器提供一个新的实验工具,可在预览here中使用。使用C#构建的语言服务器示例可从MicrosoftOmniSharp获得。后者看起来像是在C#中构建语言服务器的通用脚手架。

这个答案并没有指向Visual Studio的自定义语言实现的工作开源示例,其中包含" GoTo定义"支持,如所提出的,但它提供了一个更可行的替代方案。关于重用VisualStudioWorkspace的问题没有实际意义;语言服务器维护自己的工作空间状态。

语言服务器不实现语法突出显示。 VS Code使用TextMate grammar进行语法突出显示。但是hints language server protocol将来可以从http://myjenkins.com获得更精确的语法突出显示。