罗斯林工作区API:冒落WPF和Silverlight项目(Roslyn Workspace API

2019-10-21 15:07发布

我试图在散发出此解决方案的每个项目。

我不知道为什么有与冒落“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));
        }
    }

Answer 1:

Silverlight和WPF项目有一个比较复杂的构建过程,其中一些代码在由东西,如XAML标记编译器编译的时候产生的。 调用Emit不会触发该代码运行-它只是代表了在对的MSBuild任务CSC单个呼叫。

大多数时候OpenSolutionAsync实际上导致构建远远不够,CSC的调用将工作进度,但显然不是为这些项目类型。

对于ConsoleApplication,问题是,它引用了PCL和门面引用不正确添加。

你可以在文件中的问题http://github.com/dotnet/roslyn我们展开调查?



文章来源: Roslyn Workspace API : Emiting Wpf and Silverlight Projects
标签: roslyn emit