欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET 社區(qū)工具包 .NET Community Toolkit 8.4.0 官方最新開源版

.NET社區(qū)工具包下載

  • 軟件大小:1.2MB
  • 軟件語言:英文軟件
  • 軟件類型:國外軟件
  • 軟件授權(quán):免費(fèi)軟件
  • 軟件類別:編程其它
  • 應(yīng)用平臺:Windows平臺
  • 更新時(shí)間:2025-01-07
  • 網(wǎng)友評分:
360通過 騰訊通過 金山通過

情介紹

.NET 社區(qū)工具包是一個(gè)從 Windows 社區(qū)工具包拆解出來的 .NET 開發(fā)工具包,內(nèi)含一組跨平臺的幫助程序和 API。該工具包由 Microsoft 維護(hù)和發(fā)布,是 .NET 基金會的一部分,被多個(gè)微軟內(nèi)部項(xiàng)目和應(yīng)用程序使用,例如 Microsoft Store。

.NET 社區(qū)工具包的所有內(nèi)容最初都是 Windows 社區(qū)工具包的一部分,但隨著時(shí)間的推移,僅針對 .NET 而不特定于 Windows 依賴項(xiàng)的 API 數(shù)量不斷增加,微軟決定將 .NET 相關(guān)得內(nèi)容拆分到一個(gè)單獨(dú)的項(xiàng)目中,以便它們可以獨(dú)立發(fā)展,.NET Community Toolkit 由此誕生。

由于分支之前的 Windows 社區(qū)工具包的最后一個(gè)版本是 7.1.x,因此,拆分出來的 .NET 社區(qū)工具包從 8.0.0 版本號開始。

8.2新版本包括在運(yùn)行時(shí)和 MVVM Toolkit 源碼生成器中的性能改進(jìn)、新代碼修復(fù)程序、新的用戶請求功能等內(nèi)容。

包含的組件

CommunityToolkit.Mvvm(又名 MVVM 工具包):一個(gè)快速、模塊化、平臺無關(guān)的 MVVM 庫,它是 MvvmLight 替代品,廣泛用于 Microsoft Store 和其他第一方應(yīng)用程序。
CommunityToolkit.Mvvm.SourceGenerators:用于擴(kuò)充 MVVM 工具包的源碼生成器。
CommunityToolkit.Diagnostics: 一組輔助 API(特別是 Guard和 ThrowHelper),可用于更簡潔、更高效且不易出錯(cuò)的參數(shù)驗(yàn)證和錯(cuò)誤檢查。
CommunityToolkit.HighPerformance用于在高性能場景中工作的助手集合。它包括諸如池化緩沖區(qū)助手、快速字符串池Memory<T> 類型、也支持不連續(xù)區(qū)域的和 Span<T> 的 2D 變體 Span2D<T>、用于位移操作的助手(例如 BitHelper)等 API。
CommunityToolkit.Common:一組與其他 CommunityToolkit 庫共享的幫助程序 API。

更新介紹

自定義屬性?[ObservableProperty]

對于 MVVM 工具包源代碼生成器,我們最需要的功能之一(請參閱#208、#217、#228)是支持對[ObservableProperty]使用自定義屬性。有幾個(gè)提議的設(shè)計(jì)來支持這一點(diǎn),我們最終決定利用 C# 中的現(xiàn)有語法 “ property”:?來讓開發(fā)人員標(biāo)記屬性以傳播到生成的屬性。有幾個(gè)優(yōu)勢:

它利用內(nèi)置的 C# 語法,使該功能感覺“原生”并且不需要額外的屬性

它解決了注解屬性只能針對屬性,不能針對字段的問題

也就是說,使用 MVVM Toolkit 8,現(xiàn)在支持以下場景:

[ 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) ;
可以看到生成的屬性有我們指定的兩個(gè)屬性!這允許完全靈活地為生成的屬性添加注釋,同時(shí)使用內(nèi)置的 C# 語法并且對該功能支持的屬性類型沒有限制。

注意:生成的代碼略有不同,包括此處未顯示的其他性能優(yōu)化。

MVVM 工具包分析器

此版本的 MVVM 工具包也是第一個(gè)引入專用分析器的版本。它能夠幫助開發(fā)人員以最佳方式使用 MVVM 工具包。也就是說,MVVM 工具包將不再只是針對使用錯(cuò)誤的功能發(fā)出診斷(例如,以報(bào)錯(cuò)的方式),它現(xiàn)在還會顯示改進(jìn)代碼和避免常見錯(cuò)誤的建 議!

第一個(gè)分析器涵蓋了使用[ObservableProperty]屬性時(shí)的一個(gè)常見錯(cuò)誤。參照這個(gè)例子:

[ ObservableProperty] privatestring? name;
[ RelayCommand] publicasyncTask LoadUserAsync( ) {User user = await_userService.FetchUserAsync;

name = user.Name; // Whoops! Assigning to the field!}

開發(fā)人員不小心分配給一個(gè)字段(而不是生成的屬性),然后被卡在 UI 上。UI 上沒有顯示該更改,也沒有明確說明為什么會這樣,這一情景已經(jīng)被多次提出。新的分析器將在這些情況下提供幫助,它將標(biāo)記支持可觀察屬性的字段的所有賦值,并顯示診斷建議引用生成的屬性。你不會再收到莫名其妙的屬性丟失的通知。

第二個(gè)新分析器旨在幫助減少使用 MVVM 工具包的應(yīng)用程序中的二進(jìn)制文件大小。正如我們在8.0.0 公告帖子中提到的,MVVM 工具包包含多個(gè)屬性(例如[ObservableObject]),這些屬性允許生成器將實(shí)現(xiàn) INotifyPropertyChanged 和 INotifyPropertyChanging 接口所需的所有代碼(也可選擇使用其他幫助程序)注入現(xiàn)有類。

這僅適用于無法繼承的情況:如果您不屬于這種情況,您應(yīng)該選擇繼承 ObservableObject,從而減小的二進(jìn)制文件大小,因?yàn)榫幾g器不必在每個(gè)過程中一遍又一遍地復(fù)制那些相同的助手類型。請參閱這個(gè)例子:

[ ObservableObject] publicpartialclassMyViewModel{[ ObservableProperty] privatestring? name; }
這里,MyViewModel 不是從任何類型繼承而來,因此它應(yīng)該繼承 ObservableObject 而不是使用[ObservableObject]屬性,以此改進(jìn)二進(jìn)制大小。新的分析器將標(biāo)記所有與此類似的場景并建議改用繼承。這將特別有助于初學(xué)者,他們可能不了解兩種不同方法的細(xì)微差別并且可能不知道如何選擇。在這些情況下,現(xiàn)在分析器可以提供幫助。

MVVM 工具包源代碼生成器優(yōu)化

正如我們提到的,這個(gè)新版本還包括對 MVVM 工具包的主要性能優(yōu)化,以進(jìn)一步改善開發(fā)人員的用戶體驗(yàn),尤其是優(yōu)化了開發(fā)人員在處理非常大的解決方案時(shí)的體驗(yàn)。我們花了很多時(shí)間改進(jìn)我們所有生成器的架構(gòu),并與 Roslyn 團(tuán)隊(duì)的工程師交談,以確保我們正在盡可能地發(fā)揮它們的性能。

以下只是我們在這方面所做的一部分改進(jìn):

為 Roslyn 4.3 添加了多目標(biāo)

(#428 ,#462 ):如果支持,MVVM 工具包源代碼生成器現(xiàn)在將使用 Roslyn 4.3 目標(biāo),這樣他們就可以在主機(jī)支持的情況下選擇加入一些更優(yōu)化的 API。這一功能在引用 MVVM 工具包時(shí)會自動啟用。

使用 ForAttributeWithMetadataName<T>

(#436 ):我們將生成器切換到新的高級 Roslyn API 以匹配屬性 ,這大大提高了生成器觸發(fā)特定屬性的性能。比如現(xiàn)在[ObservableProperty]就在用這個(gè)。

將診斷移入診斷分析器

(#433 ,#434 ):我們將幾乎所有診斷都移動到診斷分析器,這些診斷分析器在進(jìn)程外運(yùn)行并且獨(dú)立于源生成器。這樣能夠顯著減少鍵入時(shí)的overhead,因?yàn)樗性\斷邏輯現(xiàn)在都在單獨(dú)的進(jìn)程中運(yùn)行,并且不會降低 IntelliSense 的速度。

停止在增量提供程序中使用符號

( #435 ):我們更新了所有增量提供程序以不再傳播符號。這可以減少內(nèi)存使用,因?yàn)閭鞑シ枙?dǎo)致 Roslyn 不必要地根編譯對象。

更多性能優(yōu)化 ( #447 、 #460 、 #469 、 #487 、 #489 ):我們徹底檢查了所有增量模型和增量管道,以顯著提高性能并減少內(nèi)存分配。
IObservable<T>?信使擴(kuò)展

另一個(gè)功能需求,尤其是由那些在應(yīng)用程序中大量使用響應(yīng)式 API 開發(fā)人員提出,是尋求一種方法來橋接 MVVM 工具包中的功能。界面的新擴(kuò)展? IObservable<T>?extensions?現(xiàn)在支持此功能。它們可以按如下方式使用:

IObservable < MyMessage> observable = Messenger.CreateObservable < MyMessage> ;
就像這樣!此擴(kuò)展將創(chuàng)建一個(gè)對象 IObservable<T>?,該對象可用于訂閱消息并對其做出動態(tài)反應(yīng)。還支持通過單獨(dú)的重載指定不同的標(biāo)記。這面這個(gè)示例展示了新 API 的端到端使用:

vartoken = Messenger .CreateObservable<MyMessage> .Where(...) .Subscribe( m=> Console.WriteLine($ "Hello {m.Username}!"));
.NET 7和 C# 11支持

.NET Community Toolkit 工具包的新發(fā)布版本還將 .NET 7 TFM 添加到高性能包中,新版本中還包括一些變動,主要對新的 C# 11語言功能進(jìn)行了改善,比如 ref?fields 就是一個(gè)典型。

以下類型現(xiàn)在不再處于預(yù)覽狀態(tài),以及更新使用了新的 ref?安全規(guī)則:

Ref<T>

ReadOnlyRef<T>

NullableRef<T>

ReadOnlyNullableRef<T>

下面這種場景可以使用這些規(guī)則:

publicstaticboolTryGetElementRef( outNullableRef<T> reference ) { // Logic here... }
也就是說,使用?NullableRef<T>?類型規(guī)則可以有效地讓方法具有 out?ref?T?參數(shù), 而這在 C# 中是無法通過表達(dá)式做到的. 我們還計(jì)劃擴(kuò)展這些類型的 API 淺層面,從而允許這些類型通過使用 Unsafe 類型,提供一種易于使用的替代 GC-ref 算法的方法,這在視覺上也更類似于傳統(tǒng)的指針?biāo)惴ā?/p>

此外,所有不在預(yù)覽模式中的 ref?struct?類型都已被更新,使用內(nèi)部的 ref? 字段實(shí)現(xiàn)更好的性能。這些類型包括:

Span2D<T>

ReadOnlySpan2D<T>

RefEnumerable<T>

ReadOnlyRefEnumerable<T>

SpanEnumerable<T>

ReadOnlySpanEnumerable<T>

更多新變化可參照官方文檔。

更新日志

發(fā)生了什么變化
在#944中改進(jìn)@Sergio0694生成的代碼中的[ServableProperty]中的可空注釋
添加.targets以驗(yàn)證#942中@Sergio0694的Windows SDK版本
更新的SDK包檢查。NET 9 SDK,作者@Sergio0694,發(fā)表于第952期
允許@Sergio0694在#946中將屬性轉(zhuǎn)發(fā)給屬性訪問者
修復(fù)#964中@Sergio0694對自定義屬性目標(biāo)的抑制
在#966中添加對@segio0694的[ServableProperty]的部分屬性的支持
通過#967中的@Sergio0694將NuGet包更新到最新穩(wěn)定版本
通過#968中的@Sergio0694將一些診斷轉(zhuǎn)移到分析儀
修復(fù)了#970中@Sergio0694生成的部分屬性的錯(cuò)誤
在#972中由@Sergio0694處理部分屬性代碼修復(fù)程序中的“必需”字段
刪除“this”@Sergio0694在973中的部分屬性碼修復(fù)器表達(dá)式
在#979中,@Sergio0694為WinRT場景添加MVVM Toolkit分析器
在#980中由@Sergio0694為所有分析器項(xiàng)目嵌入.pdb文件
通過#981中的@Sergio0694為類級屬性添加更多WinRT分析器
@Sergio0694在#984中提高了新分析儀的位置分辨率
移除。NET 6 TFM作者:@Sergio0694
允許@Poker在#926中演唱的問題模板中的代碼塊
改進(jìn)#988中@Sergio0694的“RequiresCharpLanguageVersionPreviewAnalyzer”
#997中@Sergio0694在“IndexOf”API中使用“ref readonly”
在#808中,@paulomorgado在ReadOnlySequence上添加了流
修復(fù)#999中@Sergio0694對WinRT診斷之一的消息
#1000中@Sergio0694在C#未“預(yù)覽”時(shí)對WinRT AOT兼容性的新信息診斷
修復(fù)評論中的小拼寫錯(cuò)誤。通過@realybin在#974
@Sergio0694在#1003中進(jìn)行了細(xì)微的診斷調(diào)整
在#1002中,@Sergio0694將Roslyn更新為4.12以獲取新的生成器
在#1008中,@Sergio0694支持修復(fù)具有多個(gè)屬性的屬性列表
@Sergio0694在#1009中為“MVVMTK0051”診斷發(fā)出一致的位置
添加更多分析器,通過#1010中的@Sergio0694啟用部分屬性的單元測試
支持更多局部屬性修飾符,禁止在#1015中使用@Sergio0694的指針類型
在#1016中通過@Sergio0694將NuGet包更新到最新穩(wěn)定版本
在#1019中,@Sergio0694改進(jìn)了[GeneratedBindableCustomProperty]分析器的過濾邏輯
提高SpanExtensions的測試覆蓋率。索引由@Youssef1313在#1023
在#1020中,@Sergio0694將半自動屬性的代碼修復(fù)器添加到“[ServableProperty]”部分屬性中
通過#1024中的@Sergio0694改進(jìn)半自動屬性分析儀中的濾波
在#1026中,@Sergio0694使用表達(dá)式體處理半自動屬性
新貢獻(xiàn)者
@撲克歌手在#926中做出了他們的第一個(gè)貢獻(xiàn)
@paulomorgado在#808中做出了他們的第一個(gè)貢獻(xiàn)
@realybin在974年做出了他們的第一個(gè)貢獻(xiàn)

載地址

下載錯(cuò)誤?【投訴報(bào)錯(cuò)】

.NET 社區(qū)工具包 .NET Community Toolkit 8.4.0 官方最新開源版

      氣軟件

      關(guān)文章

      載聲明

      ☉ 解壓密碼:www.dbjr.com.cn 就是本站主域名,希望大家看清楚,[ 分享碼的獲取方法 ]可以參考這篇文章
      ☉ 推薦使用 [ 迅雷 ] 下載,使用 [ WinRAR v5 ] 以上版本解壓本站軟件。
      ☉ 如果這個(gè)軟件總是不能下載的請?jiān)谠u論中留言,我們會盡快修復(fù),謝謝!
      ☉ 下載本站資源,如果服務(wù)器暫不能下載請過一段時(shí)間重試!或者多試試幾個(gè)下載地址
      ☉ 如果遇到什么問題,請?jiān)u論留言,我們定會解決問題,謝謝大家支持!
      ☉ 本站提供的一些商業(yè)軟件是供學(xué)習(xí)研究之用,如用于商業(yè)用途,請購買正版。
      ☉ 本站提供的.NET 社區(qū)工具包 .NET Community Toolkit 8.4.0 官方最新開源版資源來源互聯(lián)網(wǎng),版權(quán)歸該下載資源的合法擁有者所有。