.NET Community Toolkit 8.1 发布

.NET Community Toolkit 8.1 发布总结

最近,微软发布了 .NET Community Toolkit 8.1。此次更新主要针对 MVVM Toolkit 的源代码生成器进行了性能优化,并引入了一些新功能,包括对 ObservableProperty 的自定义属性支持、MVVM Toolkit 分析器、IObservable<T> 的 Messenger 扩展以及对 .NET 7 和 C# 11 的支持。

主要更新内容

  1. 自定义属性支持
    社区曾提出为 ObservableProperty 添加自定义属性的需求。此前,这只能手动为 MVVM Toolkit 的源代码生成器设置。在新版本中,微软团队决定使用现有的 property: 语法(C# 中的一种语法,允许开发者标记属性以传播到生成的属性中)。这一解决方案的优势在于,使用内置的 C# 语法,无需额外属性,同时解决了只能应用于属性而不能应用于字段的注解问题。
  2. 性能优化
    新版本的源代码生成器将使用 Roslyn 4.3 目标,如果主机支持,可以启用更多优化 API。此外,生成器已切换到新的高级 Roslyn API 以匹配属性,从而提升了基于特定属性运行的生成器性能。
  3. 诊断分析器的改进
    几乎所有诊断都已移至诊断分析器,减少了输入时的开销,并优化了所有增量模型和管道,进一步降低了整体内存分配。
  4. Messenger API 扩展
    新版本引入了对 IMessenger 接口的 IObservable<T> 扩展,开发者可以通过以下方式使用:

    IObservable<MyMessage> observableMessage = Messenger.CreateObservable<MyMessage>();

    该扩展创建了一个 IObservable<T> 对象,可用于订阅消息并动态响应。

  5. 对 .NET 7 和 C# 11 的支持
    新版本为 HighPerformance 包提供了 .NET 7 TFM 平台,并利用了 C# 11 的新特性,特别是 ref 字段。开发者可以在 ref struct 中声明 ref 字段,运行时也能够使用 C# 类型系统完全定义 Span<T>

社区反馈

  • Sergio Pedri 的评论
    微软 .NET 工程师 Sergio Pedri 在 Reddit 上提到,新版本增加了 Roslyn 多目标支持,并添加了自定义的 .targets 文件以手动处理多目标问题,这可能会改善 Rider 等非 Visual Studio 环境下的体验。
  • Aathif Mahir 的评论
    .NET 开发者 Aathif Mahir 在 Twitter 上表示,.NET Community Toolkit 的强大功能和它为开发者节省的时间不容忽视,他特别赞赏了社区和 Sergio Pedri 的贡献。

总结

.NET Community Toolkit 8.1 带来了多项性能改进和新功能,特别是在 MVVM Toolkit 的源代码生成器和 Messenger API 方面。此外,对 .NET 7 和 C# 11 的支持也进一步扩展了其适用性。开发者社区对这一版本的反应积极,认为它显著提升了开发效率和跨平台体验。完整的更新日志可在 GitHub 上查看。

阅读 40
0 条评论