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 提交问题供我们调查吗?
我尝试在这个解决方案中发出每个项目。
我想知道为什么 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 提交问题供我们调查吗?