Roslyn 解决方案刷新
Roslyn Solution Refresh
我正在创建一些 VSIX。我有 VisualStudioWorkspace 服务。现在,我能够解析语法树并且一切正常。但是,当一个新文件被添加到解决方案中时(例如作为一些 VisualStudio 工作的结果),该文档不存在于 VisualStudioWorkspace.CurrentSolution 中。它是这样工作的:
首先,我得到工作区:
currentWorkspace = componentModel.GetService<VisualStudioWorkspace>();
现在 currentWorkspace.CurrentSolution
我可以得到语法树。现在作为一些工作的结果,一个新的 cs 文件被添加到解决方案中,但是 currentWorkspace.CurrentSolution
没有显示它。我必须手动添加吗?有什么方法可以刷新这个 CurrentSolution 对象吗?
Do I have to to add it manually?
是的,roslyn 的设计是所有对象都是不可变的,因此您必须return 一个新的解决方案。
github 上有几个支持这一事实的讨论:
https://github.com/KirillOsenkov/Bliki/wiki/Roslyn-Immutable-Trees
https://github.com/dotnet/roslyn/issues/7626
我正在创建一些 VSIX。我有 VisualStudioWorkspace 服务。现在,我能够解析语法树并且一切正常。但是,当一个新文件被添加到解决方案中时(例如作为一些 VisualStudio 工作的结果),该文档不存在于 VisualStudioWorkspace.CurrentSolution 中。它是这样工作的:
首先,我得到工作区:
currentWorkspace = componentModel.GetService<VisualStudioWorkspace>();
现在 currentWorkspace.CurrentSolution
我可以得到语法树。现在作为一些工作的结果,一个新的 cs 文件被添加到解决方案中,但是 currentWorkspace.CurrentSolution
没有显示它。我必须手动添加吗?有什么方法可以刷新这个 CurrentSolution 对象吗?
Do I have to to add it manually?
是的,roslyn 的设计是所有对象都是不可变的,因此您必须return 一个新的解决方案。
github 上有几个支持这一事实的讨论:
https://github.com/KirillOsenkov/Bliki/wiki/Roslyn-Immutable-Trees https://github.com/dotnet/roslyn/issues/7626