3

我一直在尝试使用以下代码保留一个新的解决方案,其中包含一个项目和一个简单的 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);
    }
}
4

1 回答 1

4

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

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

于 2016-06-16T14:26:37.597 回答