我开始想知道如何使用Rolsyn的Workspace API和Compiler API发布C#项目。Roslyn Workspace API:发布解决方案中的每个项目dll
这是我得到迄今:
var msBuild = MSBuildWorkspace.Create();
var sln = msBuild.OpenSolutionAsync
(@"D:\User\Documents\visual studio 14\Projects\ConsoleApplicationWorkspaces"
[email protected]"\ConsoleApplicationWorkspaces.sln").Result;
foreach (var item in sln.Projects)
{
EmitProject(item);
}
public static async void EmitProject(Project proj)
{
var c = await proj.GetCompilationAsync();
var options = new CSharpCompilationOptions
(OutputKind.DynamicallyLinkedLibrary);
c = c.WithOptions(options);
c = c.AddReferences(proj.MetadataReferences);
var result = c.Emit("my" + proj.Name + ".dll");
Console.WriteLine(r.Success);
}
此代码不起作用。 根据诊断信息,我没有添加诸如“System.Runtime”,“System.Linq”之类的引用。
使用Workspace API我可以得到我需要的引用,但我想我仍然会将它们添加错误。
备注:不要写'async void'。 – SLaks