软件 | .NET 社区工具包 .NET Community Toolkit 8.4.0 官方最新开源版 |
图标 | ![]() |
分类 | 软件下载-应用软件-编程开发-编程其它-.NET社区工具包下载 编程其它 |
语言 | 英文软件 |
大小 | 1.2MB |
软件类型 | 国外软件 |
发布时间 | |
用户评分 | 4 |
备案号 | |
官方网址 | |
软件授权 | 免费软件 |
操作系统 | Windows平台 |
厂商 | |
下载 | ![]() |
介绍 |
.NET 社区工具包是一个从 Windows 社区工具包拆解出来的 .NET 开发工具包,内含一组跨平台的帮助程序和 API。该工具包由 Microsoft 维护和发布,是 .NET 基金会的一部分,被多个微软内部项目和应用程序使用,例如 Microsoft Store。 .NET 社区工具包的所有内容最初都是 Windows 社区工具包的一部分,但随着时间的推移,仅针对 .NET 而不特定于 Windows 依赖项的 API 数量不断增加,微软决定将 .NET 相关得内容拆分到一个单独的项目中,以便它们可以独立发展,.NET Community Toolkit 由此诞生。 由于分支之前的 Windows 社区工具包的最后一个版本是 7.1.x,因此,拆分出来的 .NET 社区工具包从 8.0.0 版本号开始。 8.2新版本包括在运行时和 MVVM Toolkit 源码生成器中的性能改进、新代码修复程序、新的用户请求功能等内容。 包含的组件CommunityToolkit.Mvvm(又名 MVVM 工具包):一个快速、模块化、平台无关的 MVVM 库,它是 MvvmLight 替代品,广泛用于 Microsoft Store 和其他第一方应用程序。 更新介绍自定义属性?[ObservableProperty] 对于 MVVM 工具包源代码生成器,我们最需要的功能之一(请参阅#208、#217、#228)是支持对[ObservableProperty]使用自定义属性。有几个提议的设计来支持这一点,我们最终决定利用 C# 中的现有语法 “ property”:?来让开发人员标记属性以传播到生成的属性。有几个优势: 它利用内置的 C# 语法,使该功能感觉“原生”并且不需要额外的属性 它解决了注解属性只能针对属性,不能针对字段的问题 也就是说,使用 MVVM Toolkit 8,现在支持以下场景: [ ObservableProperty] [ property: JsonPropertyName( "responseName") ] [ property: JsonRequired] privatestring? _name; [ JsonPropertyName( "responseName") ] [ JsonRequired] publicstring? Name { get=> _name; set { if(!EqualityComparer< string?>.Default.Equals(_name, value)) { OnPropertyChanging( "Name"); OnNameChanging( value); _name = value; OnPropertyChanged( "Name"); OnNameChanged( value); } } } partialvoidOnNameChanging( string? value) ; partialvoidOnNameChanged( string? value) ; 注意:生成的代码略有不同,包括此处未显示的其他性能优化。 MVVM 工具包分析器 此版本的 MVVM 工具包也是第一个引入专用分析器的版本。它能够帮助开发人员以最佳方式使用 MVVM 工具包。也就是说,MVVM 工具包将不再只是针对使用错误的功能发出诊断(例如,以报错的方式),它现在还会显示改进代码和避免常见错误的建 议! 第一个分析器涵盖了使用[ObservableProperty]属性时的一个常见错误。参照这个例子: [ ObservableProperty] privatestring? name; name = user.Name; // Whoops! Assigning to the field!} 开发人员不小心分配给一个字段(而不是生成的属性),然后被卡在 UI 上。UI 上没有显示该更改,也没有明确说明为什么会这样,这一情景已经被多次提出。新的分析器将在这些情况下提供帮助,它将标记支持可观察属性的字段的所有赋值,并显示诊断建议引用生成的属性。你不会再收到莫名其妙的属性丢失的通知。 第二个新分析器旨在帮助减少使用 MVVM 工具包的应用程序中的二进制文件大小。正如我们在8.0.0 公告帖子中提到的,MVVM 工具包包含多个属性(例如[ObservableObject]),这些属性允许生成器将实现 INotifyPropertyChanged 和 INotifyPropertyChanging 接口所需的所有代码(也可选择使用其他帮助程序)注入现有类。 这仅适用于无法继承的情况:如果您不属于这种情况,您应该选择继承 ObservableObject,从而减小的二进制文件大小,因为编译器不必在每个过程中一遍又一遍地复制那些相同的助手类型。请参阅这个例子: [ ObservableObject] publicpartialclassMyViewModel{[ ObservableProperty] privatestring? name; } MVVM 工具包源代码生成器优化 正如我们提到的,这个新版本还包括对 MVVM 工具包的主要性能优化,以进一步改善开发人员的用户体验,尤其是优化了开发人员在处理非常大的解决方案时的体验。我们花了很多时间改进我们所有生成器的架构,并与 Roslyn 团队的工程师交谈,以确保我们正在尽可能地发挥它们的性能。 以下只是我们在这方面所做的一部分改进: 为 Roslyn 4.3 添加了多目标 (#428 ,#462 ):如果支持,MVVM 工具包源代码生成器现在将使用 Roslyn 4.3 目标,这样他们就可以在主机支持的情况下选择加入一些更优化的 API。这一功能在引用 MVVM 工具包时会自动启用。 使用 ForAttributeWithMetadataName<T> (#436 ):我们将生成器切换到新的高级 Roslyn API 以匹配属性 ,这大大提高了生成器触发特定属性的性能。比如现在[ObservableProperty]就在用这个。 将诊断移入诊断分析器 (#433 ,#434 ):我们将几乎所有诊断都移动到诊断分析器,这些诊断分析器在进程外运行并且独立于源生成器。这样能够显著减少键入时的overhead,因为所有诊断逻辑现在都在单独的进程中运行,并且不会降低 IntelliSense 的速度。 停止在增量提供程序中使用符号 ( #435 ):我们更新了所有增量提供程序以不再传播符号。这可以减少内存使用,因为传播符号会导致 Roslyn 不必要地根编译对象。 更多性能优化 ( #447 、 #460 、 #469 、 #487 、 #489 ):我们彻底检查了所有增量模型和增量管道,以显著提高性能并减少内存分配。 另一个功能需求,尤其是由那些在应用程序中大量使用响应式 API 开发人员提出,是寻求一种方法来桥接 MVVM 工具包中的功能。界面的新扩展? IObservable<T>?extensions?现在支持此功能。它们可以按如下方式使用: IObservable < MyMessage> observable = Messenger.CreateObservable < MyMessage> ; vartoken = Messenger .CreateObservable<MyMessage> .Where(...) .Subscribe( m=> Console.WriteLine($ "Hello {m.Username}!")); .NET Community Toolkit 工具包的新发布版本还将 .NET 7 TFM 添加到高性能包中,新版本中还包括一些变动,主要对新的 C# 11语言功能进行了改善,比如 ref?fields 就是一个典型。 以下类型现在不再处于预览状态,以及更新使用了新的 ref?安全规则: Ref<T> ReadOnlyRef<T> NullableRef<T> ReadOnlyNullableRef<T> 下面这种场景可以使用这些规则: publicstaticboolTryGetElementRef( outNullableRef<T> reference ) { // Logic here... } 此外,所有不在预览模式中的 ref?struct?类型都已被更新,使用内部的 ref? 字段实现更好的性能。这些类型包括: Span2D<T> ReadOnlySpan2D<T> RefEnumerable<T> ReadOnlyRefEnumerable<T> SpanEnumerable<T> ReadOnlySpanEnumerable<T> 更多新变化可参照官方文档。 更新日志发生了什么变化 |
截图 | |
随便看 |
|
网盟-旗舰软件下载站,将绿色免费商业版破解软件、共享软件、游戏、电影、电视剧一网打尽!