如何使用roslyn将现有项目添加到c#解决方案?

我想将一个现有项目添加到我的c#solution.I使用TryApplyChanges并返回true,但它不会保存对真实解决方案的更改。 我使用的是Microsoft.CodeAnalysis。* 1.1.1版。

public void AddProject (string solutionName) { MSBuildWorkspace ws=MSBuildWorkspace.Create (); ws.OpenSolutionAsync (solutionName); ws.OpenProjectAsync ("ProjectName"); if (ws.TryApplyChanges (ws.CurrentSolution ) {// break point is here } } 

您的代码存在一些问题:

  1. MSBuildWorkspace (当前)不支持从工作空间添加/删除项目并将其保存回解决方案文件。 如果你想改进这个, 我们是开源的 。
  2. 实际上并不希望调用OpenProjectAsync来修改解决方案,因为它只是希望这样做…它只是用信息填充工作区。
  3. 你不是在等待异步调用,所以即便如此,他们可能还没有完成他们的工作,然后继续前进。

第一个对你来说显然是最关键的,但其他人也应该注意。