首页 > 解决方案 > 更新 AdHocWorkspace 很慢

问题描述

因此,我使用 Roslyn 为包含许多文件的解决方案生成智能感知结果,并且我需要在每次按键时更新文档。创建 sourcetext 实例和新解决方案只需要很少的时间,但workspace.TryApplyChanges每次按键调用大约需要 500 毫秒,这对我来说太多了。我做错了吗?(我只想通过 . 从工作区生成完成结果CompletionService。这是我更新工作区的方式:

SourceText sourceText = SourceText.From(editorText);
Solution newSolution = solutionDocument.Project.Solution.WithDocumentText(solutionDocument.Id, sourceText);
solutionWorkspace.TryApplyChanges(newSolution); //Every other part is pretty quick, except this.
solutionDocument = solutionWorkspace.CurrentSolution.GetDocument(solutionDocument.Id);

每次用户键入时,我都会调用上述代码。有什么办法可以让这更快吗?谢谢。

标签: c#.netintellisenseroslyn

解决方案


好的,我想通了。事实证明,您所要做的就是像这样更新您的工作区:

solutionWorkspace.TryApplyChanges(solutionDocument.WithText(SourceText.From(editorText)).Project.Solution);

出于某种原因,这实际上要快得多!


推荐阅读