【问题标题】:How to add project reference to another Project by using latest roslyn api如何使用最新的 roslyn api 将项目引用添加到另一个项目
【发布时间】:2014-11-26 06:15:30
【问题描述】:

我正在使用以下代码,但它不起作用

MSBuildWorkspace workspace = MSBuildWorkspace.Create();
Microsoft.CodeAnalysis.Solution originalSolution = workspace.OpenSolutionAsync(sol.SolutionPath).Result;
Microsoft.CodeAnalysis.Solution newSolution = originalSolution;

ProjectReference pr = new ProjectReference(pid);
CodeAnalysis.Project prj = newSolution.Projects.Last();
prj = prj.AddProjectReference(pr);
newSolution = prj.Solution;
workspace.TryApplyChanges(newSolution);

【问题讨论】:

  • 是否抛出异常?还是您的更改没有持续存在?

标签: c# roslyn


【解决方案1】:

MSBuildWorkspace 只是不支持在您调用 TryApplyChanges 时将项目引用传播回项目文件。我看到你已经在 CodePlex 上提交了the bug,但在它得到修复之前(我们是开源的——你也可以修复它!)没有解决方法。如果您只需要分析这个世界,就好像该项目引用存在一样,那么您不需要调用它,只需使用您尝试应用的解决方案对象即可。如果您的目标只是编辑项目文件,另一种选择是使用您选择的 MSBuild 或 XML API 来直接操作项目文件。

【讨论】:

  • Malinkwski 是否可以添加 netmodule 作为参考?
  • 您可以通过 Roslyn API 以编程方式将它们添加为元数据引用。我不知道 MSBuild 对它们的支持程度。
猜你喜欢
  • 2022-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多