1

このソリューションで各プロジェクトをエミットしてみます。

解決

「Wpf」および「Silverlight」プロジェクトのエミットに問題があるのはなぜでしょうか。現在実行中のコンソール プロジェクトを Emit できないことは理解できます。

エラー

不足している参照を追加するにはどうすればよいですか? これが私のコードです。

    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 タスクへの 1 回の呼び出しを表すだけです。

ほとんどの場合、OpenSolutionAsync実際には、CSC の呼び出しが機能するのに十分なほどビルドが進行しますが、これらのプロジェクト タイプでは明らかにそうではありません。

ConsoleApplication の問題は、PCL を参照し、ファサード参照が正しく追加されていないことです。

http://github.com/dotnet/roslynで問題を報告して調査してもらえますか?

于 2015-01-17T16:37:09.467 に答える