c# - PartialClassGenerationTask 和 MarkupCompilePass1 如何一起工作/属于

标签 c# wpf xaml msbuild baml

有人可以解释一下 MarkupCompilePass1PartialClassGenerationTask 这两个构建任务是如何归属在一起的吗?目前我不知道他们是否共存或者是否需要对方。有人可以阐明这两个类的用法以及它们如何相互交互吗?

最佳答案

MarkupCompilePass1 将使用 PartialClassGenerationTask 为所有 XAML 文件生成部分类。

WPF 管道非常复杂,并且在编译 WPF 应用程序时有许多事件部件。

PartialClassGenerationTask 专门作用于指定类型并具有 x:Class 的 XAML 文件。遇到这些问题时,任务将生成匹配的 cs 或 vb 代码文件,以便 C#/VB 编译器稍后可以引用该类及其属性。

MarkupCompilePass1 任务将基于文本的 XAML 文件转换为二进制 BAML 格式。它将编译仅引用其他项目和引用程序集中定义的类型的所有 XAML 文件。

MarkupCompilePass2 任务跟在 Pass 1 之后,它专门编译将同一项目中的代码引用到 BAML 的 XAML 文件。

要加快 XAML 项目的编译速度,最好在第二个项目(标准类库)中定义类型。这样就可以跳过 MarkupCompilePass2

MSDN 上解释了完整的 WPF 构建管道:

关于c# - PartialClassGenerationTask 和 MarkupCompilePass1 如何一起工作/属于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36966722/

相关文章:

c# - 如何实现以 ConcurrentDictionary 为条件的 TryRemove?

c# - DotNetCore3.0 WPF - 错误 - 项目文件不完整。缺少预期进口

c# - 我可以在 XAML 中实现 ScrollToHorizo​​ntalOffset() 功能吗? (对于动态列表)

c# - ListBox 未正确更改 ContentControl 的 ViewModel

c# - Azure Web角色构建错误: "Unable to import module Diagnostics. No manifest was found"

c# - 无法修改 'Selectable.Colors' 的返回值,因为它不是变量

c# - 如何防止和/或处理 StackOverflowException?

wpf - 如何在 Style Setter 中使用 multibiding

c# - GotFocus 和 GotKeyboardFocus 的区别

c# - 模糊装饰器 WPF Xaml