C# Roslyn CTP-如何将更改写入文件系统
我创建了一个名为Solution.sln的空Visual Studio解决方案,并将其加载到第一行的工作区中。然后我向解决方案中添加一个项目,并将工作区更新为最新的解决方案,该解决方案现在应该包含一个项目。如何写出我添加到空解决方案中的新内容的文件C# Roslyn CTP-如何将更改写入文件系统,c#,c#-4.0,roslyn,C#,C# 4.0,Roslyn,我创建了一个名为Solution.sln的空Visual Studio解决方案,并将其加载到第一行的工作区中。然后我向解决方案中添加一个项目,并将工作区更新为最新的解决方案,该解决方案现在应该包含一个项目。如何写出我添加到空解决方案中的新内容的文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Roslyn.Compilers; using Roslyn.Co
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;
using Roslyn.Services;
namespace RoslynMainApp
{
class Program
{
static void Main(string[] args)
{
IWorkspace workspace = Workspace.LoadSolution(@"C:\RoslynSolutions\Solution.sln");
ProjectId projectId;
ISolution solution = Solution.Create(SolutionId.CreateNewId("Solution"));
solution.AddCSharpProject("Project1.dll", "Project1", out projectId);
var success = workspace.ApplyChanges(workspace.CurrentSolution, solution);
if(success)
{
//How do I write out all the stuff I just added to Solution.sln to the directory RoslynSolutions?
}
}
}
}
提前感谢,
Bob调用
ApplyChanges
的行为应该将更改写入磁盘。然而,请注意,在CTP1中,只有一小部分可以应用于解决方案的更改被实际实现。我添加的只是一个应该实现的解决方案的单个项目。请随意将我的示例复制并粘贴到控制台窗口中,让我知道它是否在您的计算机上工作。在CTP1中,唯一受支持的是添加、更新和删除文档。不支持添加或删除项目。看起来他们今天刚刚发布了新的CTP。我将尝试一下,并通知大家是否已在CTP2中删除此限制。我将省去您的麻烦,并告诉您,CTP2不支持通过Workspace.LoadSolution加载的工作区添加项目。IWorkspace上现在有一个APIIsSupported
,它记录了实际支持的修改操作。