1

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

解决方案

我想知道为什么 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));
        }
    }
4

1 回答 1

3

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

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

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

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

于 2015-01-17T16:37:09.467 回答