我正在研究在Visual Studio扩展(VSIX)中使用Roslyn编译器,它使用 VisualStudioWorkspace
来更新现有代码 .
想象一下,我目前的解决方案有12个项目 . 对于我想要的每个项目:
-
添加新的代码文件
-
更新现有代码文件
我理解这些对象的不变性,作为一个概念验证,我写了一个例子,对第一个项目进行了更改,然后是第二个项目,等等 .
然后我想知道是否可以使用异步任务对每个项目进行更改,并且当所有任务都已完成(所有项目都已更新)时,更新解决方案 .
为此,我已经改变了我的概念验证,我不知道如何将所有更改合并到我当前的解决方案中,以便我可以在一个步骤中调用 myWorkspace.TryApplyChanges(sln)
.
1 回答
是的,这应该可以正常工作 . 当您使用一个Solution.ProjectIds集合时,它会为您提供一个不会从快照更改为快照的ID列表 .