如何使用Roslyn的AdhocWorkspace持久保存项目和文档的解决方案?

时间:2016-06-16 10:35:28

标签: c# .net visual-studio roslyn roslyn-code-analysis

我一直在尝试使用以下代码保留包含项目和简单cs文件的新解决方案,但没有任何内容保存到磁盘。我做错了什么,或者Roslyn不是用于生成解决方案项目和文件的工具?

class Program
{
    static void Main(string[] args)
    {
        var workspace = new AdhocWorkspace();

        var solutionInfo = SolutionInfo.Create(SolutionId.CreateNewId(),
                                               VersionStamp.Create(),
                                               @"C:\Seb\SebSol.sln");

        var projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(),
                                             VersionStamp.Create(),
                                             "SebProj",
                                             "SebProj.dll",
                                             LanguageNames.CSharp,
                                             @"C:\Seb\SebSol\SebProj\SebProj.csproj");

        workspace.AddSolution(solutionInfo);
        workspace.AddProject(projectInfo);

        var sourceText = SourceText.From("public class A { }");
        workspace.CurrentSolution.AddDocument(DocumentId.CreateNewId(projectInfo.Id), "ClassA.cs", sourceText);

        workspace.TryApplyChanges(workspace.CurrentSolution);
    }
}

1 个答案:

答案 0 :(得分:2)

您正在寻找MsBuildWorkspace,它实际上可以更新磁盘上MSBuild格式的slncsproj个文件。

除了该类之外,Roslyn API与MSBuild等项目格式完全无关。