Roslyn 工作区 API:发出 Wpf 和 Silverlight 项目

Roslyn Workspace API : Emiting Wpf and Silverlight Projects

我尝试在这个解决方案中发出每个项目。

我想知道为什么 Emiting "Wpf" 和 "Silverlight" 项目有问题。我可以理解我无法发出当前正在执行的控制台项目。

如何添加缺失的引用? 这是我的代码。:

    public static async Task EmitProject(Project proj)
    {
        var c = await proj.GetCompilationAsync();

        var r = c.Emit("my" + proj.Name );

        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine(r.Success + " " + proj.Name);

        if (!r.Success)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(r.Diagnostics.First(k => k.WarningLevel == 0));
        }
    }

Silverlight 和 WPF 项目的构建过程有些复杂,其中一些代码是在构建时由 XAML 标记编译器等生成的。调用 Emit 不会将该代码触发到 运行 - 它仅表示对 MSBuild 中的 CSC 任务的一次调用。

大多数时候 OpenSolutionAsync 实际上会导致构建进展到足以调用 CSC 的程度,但显然不适用于这些项目类型。

对于 ConsoleApplication,问题在于它引用了 PCL,并且未正确添加外观引用。

您可以在 http://github.com/dotnet/roslyn 提交问题供我们调查吗?