Visual studio 2015 使用Roslyn for VS2015自定义编辑器

Visual studio 2015 使用Roslyn for VS2015自定义编辑器,visual-studio-2015,roslyn,visual-studio-extensions,Visual Studio 2015,Roslyn,Visual Studio Extensions,我正在构建一个VisualStudio2015自定义编辑器(不是代码编辑器扩展,而是一个完全自定义的WPF控件)来编辑.cs文件。我真的不确定在这里使用.NET编译SDK的正确方法是什么 到目前为止,我已经尝试: 获取工作区->解决方案->项目,并使用传递给我的编辑器工厂的文件路径查找打开的文件。当然,如果文档不是解决方案的一部分,您将一无所获 通过从文本缓冲区提取数据并旋转我自己的独立语法树来解析原始源代码 我现在所做的事情一点也不干净。是否有更直接的方法访问编辑器文档的编译器API?您需

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

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

  • 获取工作区->解决方案->项目,并使用传递给我的编辑器工厂的文件路径查找打开的文件。当然,如果文档不是解决方案的一部分,您将一无所获
  • 通过从文本缓冲区提取数据并旋转我自己的独立语法树来解析原始源代码
我现在所做的事情一点也不干净。是否有更直接的方法访问编辑器文档的编译器API?

您需要使用现有的库存工作区,否则将无法获得引用,更重要的是,也无法获得预处理器符号(影响语法树的形状)

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

您需要使用现有的stock Workspace,否则将无法获得引用,更重要的是,也无法获得预处理器符号(这会影响语法树的形状)

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

您需要使用现有的stock Workspace,否则将无法获得引用,更重要的是,也无法获得预处理器符号(这会影响语法树的形状)

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

您需要使用现有的stock Workspace,否则将无法获得引用,更重要的是,也无法获得预处理器符号(这会影响语法树的形状)


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

我可能把你的问题解释错了,但我要试一试。听起来像是在为给定的文本缓冲区查找Roslyn文档

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

见:

它们没有随Microsoft.CodeAnalysisNuGet软件包一起提供,但您必须通过以下方式安装它们:

安装软件包Microsoft.CodeAnalysis.EditorFeatures.Text-版本1.0.0

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


欲了解更多信息:

我可能误解了你的问题,但我会试一试。听起来像是在为给定的文本缓冲区查找Roslyn文档

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

见:

它们没有随Microsoft.CodeAnalysisNuGet软件包一起提供,但您必须通过以下方式安装它们:

安装软件包Microsoft.CodeAnalysis.EditorFeatures.Text-版本1.0.0

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


欲了解更多信息:

我可能误解了你的问题,但我会试一试。听起来像是在为给定的文本缓冲区查找Roslyn文档

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

见:

它们没有随Microsoft.CodeAnalysisNuGet软件包一起提供,但您必须通过以下方式安装它们:

安装软件包Microsoft.CodeAnalysis.EditorFeatures.Text-版本1.0.0

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


欲了解更多信息:

我可能误解了你的问题,但我会试一试。听起来像是在为给定的文本缓冲区查找Roslyn文档

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

见:

它们没有随Microsoft.CodeAnalysisNuGet软件包一起提供,但您必须通过以下方式安装它们:

安装软件包Microsoft.CodeAnalysis.EditorFeatures.Text-版本1.0.0

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


有关详细信息:

此方法是通过搜索工作区文档来解析文件的最佳方法,还是可以直接获取文档ID?@Paul:打开普通编辑器时,您可以尝试了解Roslyn是如何进行此映射的。请看,虽然我不确定这是否是正确的位置。进一步思考,请看(虽然我不确定这会有多大帮助)这个方法,通过搜索工作区文档来解析文件,这是最好的方法,或者我可以直接获取文档ID吗?@Paul:你可以试着在打开普通编辑器时弄清楚Roslyn是如何进行映射的。请看,虽然我不确定这是否是正确的位置。进一步思考后,请看(尽管我不确定这会有多大帮助)这个方法,通过s解析文件