我正在构建一个Visual Studio 2015自定义编辑器(不是代码编辑器扩展,一个完全自定义的WPF控件)来编辑.cs文件。我真的不确定在这里使用.NET编译SDK的正确方法是什么。
到目前为止,我已经尝试过:
我现在所做的一切都不干净。是否有更直接的方法来访问编辑器文档的编译器API?
答案 0 :(得分:2)
我可能会错误地解释你的问题,但我会试一试。听起来你正试图找到给定文本缓冲区的Roslyn文档。
实际上有一整套扩展方法可以更容易地弥合Roslyn和Visual Studio对象之间的差距。
请参阅:Microsoft.CodeAnalysis.Text.Extensions
它们不随Microsoft.CodeAnalysis
NuGet包一起提供,但您必须通过以下方式安装它们:
Install-Package Microsoft.CodeAnalysis.EditorFeatures.Text -Version 1.0.0
给定ITextSnapshot
或ITextBuffer
这些方法将允许您将它们映射回原始的Roslyn文档(如果存在)。
了解更多信息:https://joshvarty.wordpress.com/2015/07/06/lrn-quick-tip-bridging-visual-studio-and-roslyn/
答案 1 :(得分:1)
您需要使用现有的库存工作区,或者您不会获得引用,更重要的是,不会影响预处理器符号(这会影响语法树的形状)。
请注意,VS可以有几个不同的工作区,包括当前解决方案的主VisualStudioWorkspace
,其他文件的MiscellaneousFilesWorkspace
以及其他一些与调试器相关的工作区。 (full list)