使用Roslyn for VS2015自定义编辑器

时间:2015-09-25 21:34:43

标签: visual-studio-2015 roslyn visual-studio-extensions

我正在构建一个Visual Studio 2015自定义编辑器(不是代码编辑器扩展,一个完全自定义的WPF控件)来编辑.cs文件。我真的不确定在这里使用.NET编译SDK的正确方法是什么。

到目前为止,我已经尝试过:

  • 获取工作区 - > soltuion->项目并使用传递给我的编辑器工厂的文件路径查找打开的文件。当然,如果文档不是解决方案的一部分,那么你什么也得不到。
  • 通过从文本缓冲区中提取数据并旋转我自己的隔离语法树来解析原始源。

我现在所做的一切都不干净。是否有更直接的方法来访问编辑器文档的编译器API?

2 个答案:

答案 0 :(得分:2)

我可能会错误地解释你的问题,但我会试一试。听起来你正试图找到给定文本缓冲区的Roslyn文档。

实际上有一整套扩展方法可以更容易地弥合Roslyn和Visual Studio对象之间的差距。

请参阅:Microsoft.CodeAnalysis.Text.Extensions

它们不随Microsoft.CodeAnalysis NuGet包一起提供,但您必须通过以下方式安装它们:

Install-Package Microsoft.CodeAnalysis.EditorFeatures.Text -Version 1.0.0

给定ITextSnapshotITextBuffer这些方法将允许您将它们映射回原始的Roslyn文档(如果存在)。

了解更多信息:https://joshvarty.wordpress.com/2015/07/06/lrn-quick-tip-bridging-visual-studio-and-roslyn/

答案 1 :(得分:1)

需要使用现有的库存工作区,或者您不会获得引用,更重要的是,不会影响预处理器符号(这会影响语法树的形状)。

请注意,VS可以有几个不同的工作区,包括当前解决方案的主VisualStudioWorkspace,其他文件的MiscellaneousFilesWorkspace以及其他一些与调试器相关的工作区。 (full list