日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者:葡萄城技術(shù)團(tuán)隊(duì)

鏈接:https://my.oschina.NET/powertoolsteam/blog/10143465

.NET 8已正式GA

1 性能提升

.NET 8 在整個(gè)堆棧中帶來了數(shù)千項(xiàng)性能改進(jìn) 。默認(rèn)情況下會啟用一種名為動(dòng)態(tài)配置文件引導(dǎo)優(yōu)化 (PGO) 的新代碼生成器,它可以根據(jù)實(shí)際使用情況優(yōu)化代碼,并且可以將應(yīng)用程序的性能提高高達(dá) 20%。現(xiàn)在支持的 AVX-512 指令集能夠?qū)?512 位數(shù)據(jù)向量執(zhí)行并行操作,這意味著可以在更短的時(shí)間內(nèi)處理更多的數(shù)據(jù)。原始類型(數(shù)字及其他類型)現(xiàn)在實(shí)現(xiàn)了新的可格式化和可解析接口,這使它們能夠直接格式化和解析為 UTF-8,而無需任何轉(zhuǎn)碼開銷。

.NET 8.0中有哪些新的變化?

2.NET Aspire

.NET Aspire 是一個(gè)用于使用 .NET 構(gòu)建彈性、可觀察和可配置的云原生應(yīng)用程序的堆棧。它包括一組針對云原生而增強(qiáng)的精選組件,默認(rèn)情況下包括遙測、彈性、配置和運(yùn)行狀況檢查。結(jié)合復(fù)雜而簡單的本地開發(fā)人員體驗(yàn),.NET Aspire 可以在第 1 天和第 100 天輕松發(fā)現(xiàn)、獲取和配置云原生應(yīng)用程序的基本依賴項(xiàng)。

.NET 8.0中有哪些新的變化?

3.NET 8 容器增強(qiáng)功能 – 更安全、更緊湊、更高效

使用 .NET 比以往更輕松、更安全地使用容器打包應(yīng)用程序。每個(gè) .NET 映像都包含一個(gè)非 root 用戶,從而通過單行配置啟用更安全的容器。.NET SDK 工具無需 Dockerfile 即可發(fā)布容器映像,并且默認(rèn)情況下是非 root 的。由于 .NET 基礎(chǔ)映像更小,因此可以更快地部署容器化應(yīng)用程序 - 包括我們映像的新實(shí)驗(yàn)變體,這些變體可為本機(jī) AOT 提供真正最小的應(yīng)用程序大小。選擇使用新的 Chiseled Ubuntu 映像變體進(jìn)行更多安全強(qiáng)化,以進(jìn)一步減少攻擊面。使用 Dockerfile 或 SDK 工具,為任何架構(gòu)構(gòu)建應(yīng)用程序和容器映像。

.NET 8.0中有哪些新的變化?

4 原生 AoT – 邁向更高密度可持續(xù)計(jì)算的旅程

無需等待 JIT(即時(shí))編譯器在運(yùn)行時(shí)編譯代碼。無需部署 JIT 編譯器和 IL 代碼。AOT 應(yīng)用程序僅部署應(yīng)用程序所需的代碼。應(yīng)用程序現(xiàn)在可以在不允許使用 JIT 編譯器的受限環(huán)境中運(yùn)行。

.NET 8.0中有哪些新的變化?

5 人工智能 – 將 AI 融入您的 .NET 應(yīng)用程序

生成式人工智能和大型語言模型正在改變?nèi)斯ぶ悄茴I(lǐng)域,使開發(fā)人員能夠在其應(yīng)用程序中創(chuàng)建獨(dú)特的人工智能體驗(yàn)。.NET 8 可以通過 .NET SDK 中一流的開箱即用 AI 功能以及與多種工具的無縫集成來輕松利用 AI。

.NET 8 為該 庫帶來了多項(xiàng)增強(qiáng)功能,以提高其與生成式 AI 工作負(fù)載的兼容性,例如集成 Tensor Primitives。隨著人工智能應(yīng)用程序的興起,新的工具和 SDK 出現(xiàn)了。我們與眾多內(nèi)部和外部合作伙伴合作,例如 Azure OpenAI、Azure Cognitive Search、Milvus、Qdrant 和 Microsoft Teams,以確保 .NET 開發(fā)人員可以通過各自的 SDK 輕松訪問各種 AI 模型、服務(wù)和平臺。此外,開源語義內(nèi)核 SDK 簡化了這些 AI 組件與新的和現(xiàn)有應(yīng)用程序的集成,以幫助您提供創(chuàng)新的用戶體驗(yàn)。System.Numerics

現(xiàn)在提供各種示例和參考模板,展示模式和實(shí)踐,以便開發(fā)人員輕松入門:

  • 客戶聊天機(jī)器人
  • 檢索增強(qiáng)生成
  • 使用 Azure AI 服務(wù)開發(fā)應(yīng)用程序

6 Blazor – 使用 .NET 構(gòu)建全棧 Web 應(yīng)用程序

.NET 8 中的 Blazor 可以同時(shí)使用服務(wù)器和客戶端來處理您的所有 Web UI 需求。這是全棧 Web UI!通過專注于優(yōu)化頁面加載時(shí)間、可擴(kuò)展性和提升用戶體驗(yàn)的多項(xiàng)新增強(qiáng)功能,開發(fā)人員現(xiàn)在可以在同一應(yīng)用程序中使用 Blazor Server 和 Blazor WebAssembly,在運(yùn)行時(shí)自動(dòng)將用戶從服務(wù)器轉(zhuǎn)移到客戶端。得益于新的基于 “Jiterpreter” 的運(yùn)行時(shí)和新的內(nèi)置組件,您的 .NET 代碼在 WebAssembly 上的運(yùn)行速度顯著加快。作為增強(qiáng).NET 8 中整體身份驗(yàn)證、授權(quán)和身份管理的一部分,Blazor 現(xiàn)在支持生成完整的基于 Blazor 的身份 UI。

7 NET MAUI – 提升性能、可靠性和開發(fā)人員體驗(yàn)

.NET MAUI 提供單一項(xiàng)目系統(tǒng)和單一代碼庫來構(gòu)建 WinUI、mac Catalyst、IOS 和 Android 應(yīng)用程序。本機(jī) AOT(實(shí)驗(yàn)性)現(xiàn)在支持針對類似 iOS 的平臺。適用于 .NET MAUI 的新 Visual Studio Code 擴(kuò)展為您提供了開發(fā)跨平臺 .NET 移動(dòng)和桌面應(yīng)用程序所需的工具。現(xiàn)在支持 Xcode 15 和 Android API 34,允許您瞄準(zhǔn)最新版本的 iOS 和 Android。在性能、控件和 UI 元素以及特定于平臺的行為方面進(jìn)行了大量的質(zhì)量改進(jìn),例如桌面交互添加了更好的點(diǎn)擊處理、鍵盤偵聽器等。

8 C# 12 功能 – 簡化語法以提高開發(fā)人員的工作效率

C# 12 讓您的編碼體驗(yàn)更加高效和愉快。現(xiàn)在,您可以使用簡單而優(yōu)雅的語法在任何類和結(jié)構(gòu)中創(chuàng)建主構(gòu)造函數(shù)。不再需要樣板代碼來初始化您的字段和屬性。使用簡潔且富有表現(xiàn)力的語法創(chuàng)建數(shù)組、跨度和其他集合類型時(shí)會感到高興。對 lambda 表達(dá)式中的參數(shù)使用新的默認(rèn)值。不再需要重載或空檢查來處理可選參數(shù)。您甚至可以使用 usingalias 指令為任何類型添加別名,而不僅僅是命名類型!

8.1 集合表達(dá)式

在 C# 12 之前,創(chuàng)建集合需要針對不同場景使用不同的語法。初始化所需的與 or 不同的語法。以下是創(chuàng)建集合的幾種方法:List<int>int [] Span<int>

int[] x1 = newint[] { 1, 2, 3, 4};

int[] x2 = Array.Empty<int>;

WriteByteArray(new[] { (byte)1, (byte)2, (byte)3});

List<int> x4 = new{ 1, 2, 3, 4};

Span<DateTime> dates = stackallocDateTime[] { GetDate(0), GetDate(1) };

WriteByteSpan(stackalloc[] { (byte)1, (byte)2, (byte)3});

8.2 任何類或結(jié)構(gòu)上的主構(gòu)造函數(shù)

C# 12 擴(kuò)展了主構(gòu)造函數(shù)以適用于所有類和結(jié)構(gòu),而不僅僅是記錄。主構(gòu)造函數(shù)允許在聲明類時(shí)定義構(gòu)造函數(shù)參數(shù):

publicclass BankAccount(stringaccountID, stringowner)

{

publicstringAccountID { get; } = accountID;

publicstringOwner { get; } = owner;

publicoverridestringToString=> $"Account ID: {AccountID}, Owner: {Owner}";

}

主構(gòu)造函數(shù)參數(shù)最常見的用途是:

  • 作為 base 構(gòu)造函數(shù)調(diào)用的參數(shù)。
  • 初始化成員字段或?qū)傩浴?/li>
  • 在實(shí)例成員中引用構(gòu)造函數(shù)參數(shù)。
  • 刪除依賴注入中的樣板。

8.3 別名任意類型

別名類型是從代碼中刪除復(fù)雜類型簽名的便捷方法。using 從 C# 12 開始,其他類型在別名指令中有效。例如,這些別名在早期版本的 C# 中無效:

usingintArray = int[]; // Array types.

usingPoint = (intx, inty); // Tuple type

usingunsafeArrayPtr = int*; // Pointer type (requires "unsafe")

8.4 默認(rèn) lambda 參數(shù)

從 C# 12 開始,您可以在 lambda 表達(dá)式中聲明默認(rèn)參數(shù):

varIncrementBy = (intsource, intincrement = 1) => source + increment;

Console.WriteLine(IncrementBy(5)); // 6

Console.WriteLine(IncrementBy(5, 2)); // 7

8.5 內(nèi)聯(lián)數(shù)組

運(yùn)行時(shí)團(tuán)隊(duì)和其他庫作者使用內(nèi)聯(lián)數(shù)組來提高應(yīng)用的性能。 內(nèi)聯(lián)數(shù)組使開發(fā)人員能夠創(chuàng)建固定大小的 struct 類型數(shù)組。 具有內(nèi)聯(lián)緩沖區(qū)的結(jié)構(gòu)應(yīng)提供類似于不安全的固定大小緩沖區(qū)的性能特征。 你可能不會聲明自己的內(nèi)聯(lián)數(shù)組,但當(dāng)它們從運(yùn)行時(shí) API 作為 System.Span<T> 或 System.ReadOnlySpan<T> 對象公開時(shí),你將透明地使用這些數(shù)組。

[System.Runtime.CompilerServices.InlineArray(10)]

publicstructBuffer

{

privateint_element0;

}

它們的用法與任何其他數(shù)組類似:

varbuffer = newBuffer;

for(inti = 0; i < 10; i++)

{

buffer[i] = i;

}

foreach(vari inbuffer)

{

Console.WriteLine(i);

}

區(qū)別在于編譯器可以利用有關(guān)內(nèi)聯(lián)數(shù)組的已知信息。 你可能會像使用任何其他數(shù)組一樣使用內(nèi)聯(lián)數(shù)組。 有關(guān)如何聲明內(nèi)聯(lián)數(shù)組的詳細(xì)信息,請參閱有關(guān) struct 類型的語言參考。

9 反射改進(jìn)

.NET 5 中引入了函數(shù)指針,但當(dāng)時(shí)未添加對反射的相應(yīng)支持。 對函數(shù)指針使用 typeof 或反射時(shí)(例如分別使用 typeof (delegate*<void>) 或 FieldInfo.FieldType),返回了 IntPtr。 從 .NET 8 開始,將改為返回 System.Type 對象。 此類型提供對函數(shù)指針元數(shù)據(jù)的訪問,包括調(diào)用約定、返回類型和參數(shù)。

新功能目前僅在 CoreCLR 運(yùn)行時(shí)和 MetadataLoadContext 中實(shí)現(xiàn)。已將新的 API 添加到 System.Type(例如 IsFunctionPointer)以及 System.Reflection.PropertyInfo、System.Reflection.FieldInfo 和 System.Reflection.ParameterInfo。 以下代碼演示如何使用一些新 API 進(jìn)行反射。

// Sample class that contains a function pointer field.

publicunsafeclassUClass

{

publicdelegate* unmanaged[Cdecl, SuppressGCTransition]<inint, void> _fp;

}

// ...

FieldInfo fieldInfo = typeof(UClass).GetField(nameof(UClass._fp));

// Obtain the function pointer type from a field.

Type fpType = fieldInfo.FieldType;

// New methods to determine if a type is a function pointer.

Console.WriteLine($"IsFunctionPointer: {fpType.IsFunctionPointer}");

Console.WriteLine($"IsUnmanagedFunctionPointer: {fpType.IsUnmanagedFunctionPointer}");

// New methods to obtain the return and parameter types.

Console.WriteLine($"Return type: {fpType.GetFunctionPointerReturnType}");

foreach(Type parameterType infpType.GetFunctionPointerParameterTypes)

{

Console.WriteLine($"Parameter type: {parameterType}");

}

// Access to custom modifiers and calling conventions requires a "modified type".

Type modifiedType = fieldInfo.GetModifiedFieldType;

// A modified type forwards most members to its underlying type.

Type normalType = modifiedType.UnderlyingSystemType;

// New method to obtain the calling conventions.

foreach(Type callConv inmodifiedType.GetFunctionPointerCallingConventions)

{

Console.WriteLine($"Calling convention: {callConv}");

}

// New method to obtain the custom modifiers.

foreach(Type modreq inmodifiedType.GetFunctionPointerParameterTypes[0].GetRequiredCustomModifiers)

{

Console.WriteLine($"Required modifier for first parameter: {modreq}");

}

輸出:

IsFunctionPointer: True

IsUnmanagedFunctionPointer: True

Returntype: System.Void

Parametertype: System.Int32&

Callingconvention: System.Runtime.CompilerServices.CallConvSuppressGCTransition

Callingconvention: System.Runtime.CompilerServices.CallConvCdecl

Requiredmodifierforfirstparameter: System.Runtime.InteropServices.InAttribute

10 配置綁定源生成器

.NET 8 引入了一個(gè)源生成器,用于在 ASP.NET Core 中提供 AOT 和適合剪裁的配置。 該生成器是現(xiàn)有的基于反射的實(shí)現(xiàn)的替代方法。

源生成器探測 Configure(TOptions)、Bind 和 Get 調(diào)用來從中檢索類型信息。 在項(xiàng)目中啟用生成器后,編譯器將隱式選擇生成的方法,而非預(yù)先存在的基于反射的框架實(shí)現(xiàn)。

無需更改源代碼即可使用生成器。 AOT Web 應(yīng)用中默認(rèn)啟用該生成器。 對于其他項(xiàng)目類型,源生成器默認(rèn)關(guān)閉,但你可通過在項(xiàng)目文件中將 EnableConfigurationBindingGenerator 屬性設(shè)置為 true 來選擇使用它:

<PropertyGroup>

<EnableConfigurationBindingGenerator>true</EnableConfigurationBindingGenerator>

</PropertyGroup>

以下代碼演示了調(diào)用綁定器的示例:

usingMicrosoft.AspNetCore.Builder;

usingMicrosoft.Extensions.Configuration;

usingMicrosoft.Extensions.DependencyInjection;

WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

IConfigurationSection section = builder.Configuration.GetSection("MyOptions");

// !! Configure call - to be replaced with source-gen'd implementation

builder.Services.Configure<MyOptions>(section);

// !! Get call - to be replaced with source-gen'd implementation

MyOptions options0 = section.Get<MyOptions>;

// !! Bind call - to be replaced with source-gen'd implementation

MyOptions options1 = newMyOptions;

section.Bind(options1);

WebApplication app = builder.Build;

app.MapGet("/", => "Hello World!");

app.Run;

publicclassMyOptions

{

publicintA { get; set; }

publicstringS { get; set; }

publicbyte[] Data { get; set; }

publicDictionary<string, string> Values { get; set; }

publicList<MyClass> Values2 { get; set; }

}

publicclassMyClass

{

publicintSomethingElse { get; set; }

}

11 針對 Android 應(yīng)用的 AOT 編譯

為了減小應(yīng)用大小,面向 Android 的 .NET 和 .NET MAUI 應(yīng)用在發(fā)布模式下構(gòu)建時(shí)使用分析的預(yù)先 (AOT) 編譯模式。 與常規(guī) AOT 編譯相比,分析的 AOT 編譯所影響的方法更少。 .NET 8 引入了 <AndroidStripILAfterAOT> 屬性,你可使用它進(jìn)一步對 Android 應(yīng)用進(jìn)行 AOT 編譯,從而更進(jìn)一步減少應(yīng)用大小。

<PropertyGroup>

<AndroidStripILAfterAOT>true</AndroidStripILAfterAOT>

</PropertyGroup>

默認(rèn)情況下,將 AndroidStripILAfterAOT 設(shè)置為 true 會替代默認(rèn)的 AndroidEnableProfiledAot 設(shè)置,從而允許剪裁已 AOT 編譯的(幾乎)所有方法。 還可通過將兩個(gè)屬性都顯式設(shè)置為 true 來結(jié)合使用分析的 AOT 和 IL 條帶化:

<PropertyGroup>

<AndroidStripILAfterAOT>true</AndroidStripILAfterAOT>

<AndroidEnableProfiledAot>true</AndroidEnableProfiledAot>

</PropertyGroup>

12 代碼分析

.NET 8 包括幾個(gè)新的代碼分析器和修復(fù)程序,可幫助驗(yàn)證是否正確且高效地使用 .NET 庫 API。 下表總結(jié)了新的分析器。

規(guī)則 ID 類別 說明
CA1856 性能 未在參數(shù)上正確應(yīng)用 ConstantExpectedAttribute 屬性時(shí)觸發(fā)。
CA1857 性能 當(dāng)參數(shù)使用 ConstantExpectedAttribute 添加批注但提供的參數(shù)不是常量時(shí)觸發(fā)。
CA1858 性能 若要確定字符串是否以給定前綴開頭,最好調(diào)用 String.StartsWith,而不是調(diào)用 String.IndexOf,然后將結(jié)果與零進(jìn)行比較。
CA1859 性能 此規(guī)則建議盡可能將特定局部變量、字段、屬性、方法參數(shù)和方法返回類型從接口或抽象類型升級到具體類型。 使用具體類型可生成更高質(zhì)量的代碼。
CA1860 性能 若要確定集合類型是否具有任何元素,最好使用 Length、Count 或 IsEmpty,而不是調(diào)用 Enumerable.Any。
CA1861 性能 重復(fù)調(diào)用時(shí),不會重復(fù)使用作為參數(shù)傳遞的常量數(shù)組,這意味著每次都會創(chuàng)建一個(gè)新數(shù)組。 若要提高性能,請考慮將數(shù)組提取到靜態(tài)只讀字段。
CA1865-CA1867 性能 對于單字符串,char 重載的性能更好。
CA2021 可靠性 Enumerable.Cast(IEnumerable) 和 Enumerable.OfType(IEnumerable) 需要兼容的類型才能正常運(yùn)行。 泛型類型不支持?jǐn)U大轉(zhuǎn)換和用戶定義的轉(zhuǎn)換。
CA1510-CA1513 可維護(hù)性 在構(gòu)造新的異常實(shí)例方面,引發(fā)幫助程序比 if 塊更簡單、更高效。 這四個(gè)分析器是為以下例外情況創(chuàng)建的:ArgumentNullException、ArgumentException、ArgumentOutOfRangeException 和 ObjectDisposedException。

13 Core .NET 庫

13.1 時(shí)間抽象

新的 TimeProvider 類和 ITimer 接口添加了時(shí)間抽象功能,讓你可以在測試方案中模擬時(shí)間。 此外,還可以使用時(shí)間抽象,通過 Task.Delay 和 Task.WaitAsync 來模擬依賴于時(shí)間進(jìn)度的 Task 操作。 時(shí)間抽象支持以下基本時(shí)間操作:

  • 檢索本地和 UTC 時(shí)間
  • 獲取用于測量性能的時(shí)間戳
  • 創(chuàng)建計(jì)時(shí)器

以下代碼片段演示了一些使用情況示例。

// Get system time.

DateTimeOffset utcNow = TimeProvider.System.GetUtcNow;

DateTimeOffset localNow = TimeProvider.System.GetLocalNow;

// Create a time provider that works with a

// time zone that's different than the local time zone.

privateclassZonedTimeProvider: TimeProvider

{

privateTimeZoneInfo _zoneInfo;

publicZonedTimeProvider(TimeZoneInfo zoneInfo) : base

{

_zoneInfo = zoneInfo ?? TimeZoneInfo.Local;

}

publicoverrideTimeZoneInfo LocalTimeZone => _zoneInfo;

publicstaticTimeProvider FromLocalTimeZone(TimeZoneInfo zoneInfo)=>

newZonedTimeProvider(zoneInfo);

}

// Create a timer using a time provider.

ITimer timer = timeProvider.CreateTimer(callBack, state, delay, Timeout.InfiniteTimeSpan);

// Measure a period using the system time provider.

longproviderTimestamp1 = TimeProvider.System.GetTimestamp;

longproviderTimestamp2 = TimeProvider.System.GetTimestamp;

varperiod = GetElapsedTime(providerTimestamp1, providerTimestamp2);

13.2 UTF8 改進(jìn)

如果要啟用將類型的類似字符串的表示形式寫出到目標(biāo)范圍,請?jiān)陬愋蜕蠈?shí)現(xiàn)新的 IUtf8SpanFormattable 接口。 此新接口與 ISpanFormattable 密切相關(guān),但面向 UTF8 和 Span<byte>,而不是 UTF16 和 Span<char>。

IUtf8SpanFormattable 已在所有基元類型(以及其他)上實(shí)現(xiàn),無論是面向 string、Span<char> 還是 Span<byte>,其共享邏輯完全一致。 它完全支持所有格式(包括新的 “B” 二進(jìn)制說明符)和所有區(qū)域性。 這意味著現(xiàn)在可以從 Byte、Complex、Char、DateOnly、DateTime、DateTimeOffset、Decimal、Double、Guid、Half、IPAddress、IPNetwork、Int16、Int32、Int64、Int128、IntPtr、NFloat、SByte、Single、Rune、TimeOnly、TimeSpan、UInt16、UInt32、UInt64、UInt128、UIntPtr 和 Version 直接格式化為 UTF8。

新的 Utf8.TryWrite 方法向現(xiàn)有 MemoryExtensions.TryWrite 方法(基于 UTF16)提供基于 UTF8 的對應(yīng)方法。 可以使用內(nèi)插字符串語法將復(fù)雜表達(dá)式直接格式化為 UTF8 字節(jié)范圍,例如:

staticboolFormatHexVersion(

shortmajor,

shortminor,

shortbuild,

shortrevision,

Span<byte> utf8Bytes,

outintbytesWritten)=>

Utf8.TryWrite(

utf8Bytes,

CultureInfo.InvariantCulture,

$"{major:X4}.{minor:X4}.{build:X4}.{revision:X4}",

outbytesWritten);

13.3 加密

.NET 8 添加了對 SHA-3 哈希基元的支持。 (目前,具有 OpenSSL 1.1.1 或更高版本和 windows 11 Build 25324 或更高版本的 linux 支持 SHA-3。)可在其中使用 SHA-2 的 API 現(xiàn)在提供對 SHA-3 的補(bǔ)充。 對于哈希,這包括 SHA3_256、SHA3_384 和 SHA3_512;對于 HMAC,這包括 HMACSHA3_256、HMACSHA3_384 和 HMACSHA3_512;對于其中可配置算法的哈希,這包括 HashAlgorithmName.SHA3_256、HashAlgorithmName.SHA3_384 和 HashAlgorithmName.SHA3_512;對于 RSA OAEP 加密,這包括 RSAEncryptionPadding.OaepSHA3_256、RSAEncryptionPadding.OaepSHA3_384 和 RSAEncryptionPadding.OaepSHA3_512。

以下示例演示如何使用 API(包括 SHA3_256.IsSupported 屬性)來確定平臺是否支持 SHA-3。

// Hashing example

if(SHA3_256.IsSupported)

{

byte[] hash = SHA3_256.HashData(dataToHash);

}

else

{

// ...

}

// Signing example

if(SHA3_256.IsSupported)

{

usingECDsa ec = ECDsa.Create(ECCurve.NamedCurves.nistP256);

byte[] signature = ec.SignData(dataToBeSigned, HashAlgorithmName.SHA3_256);

}

else

{

// ...

}

13.4 基于流的 ZipFile 方法

.NET 8 包含 ZipFile.CreateFromDirectory 的新重載,通過它可以收集目錄中包含的所有文件并壓縮這些文件,然后將生成的 zip 文件存儲到提供的流中。 同樣,通過新的 ZipFile.ExtractToDirectory 重載,可提供包含壓縮文件的流,并將其內(nèi)容提取到文件系統(tǒng)中。 下面是新的重載:

namespaceSystem.IO.Compression;

publicstaticpartialclassZipFile

{

publicstaticvoidCreateFromDirectory(stringsourceDirectoryName, Stream destination);

publicstaticvoidCreateFromDirectory(stringsourceDirectoryName, Stream destination, CompressionLevel compressionLevel, boolincludeBaseDirectory);

publicstaticvoidCreateFromDirectory(stringsourceDirectoryName, Stream destination, CompressionLevel compressionLevel, boolincludeBaseDirectory, Encoding? entryNameEncoding);

publicstaticvoidExtractToDirectory(Stream source, stringdestinationDirectoryName){ }

publicstaticvoidExtractToDirectory(Stream source, stringdestinationDirectoryName, booloverwriteFiles){ }

publicstaticvoidExtractToDirectory(Stream source, stringdestinationDirectoryName, Encoding? entryNameEncoding){ }

publicstaticvoidExtractToDirectory(Stream source, stringdestinationDirectoryName, Encoding? entryNameEncoding, booloverwriteFiles){ }

}

ActiveReports 是一款專注于 .NET 和 .NET Core 平臺的報(bào)表控件。通過拖拽式報(bào)表設(shè)計(jì)器, 可以快速地設(shè)計(jì) Excel 表格、word 文檔、圖表、數(shù)據(jù)過濾、數(shù)據(jù)鉆取、精準(zhǔn)套打等類型報(bào)表, 全面滿足 WinForm、ASP.NET、ASP.NET MVC、WPF 平臺中各種報(bào)表的開發(fā)需要。 同時(shí),通過豐富的 API 可以靈活的實(shí)現(xiàn)報(bào)表創(chuàng)建、加載和運(yùn)行時(shí)的個(gè)性化自定義需求。

Wyn 商業(yè)智能是基于葡萄城 20 多年數(shù)據(jù)分析技術(shù)積累打造的全新一代嵌入式 BI 產(chǎn)品,旨在提供可與應(yīng)用系統(tǒng)深度集成的數(shù)據(jù)分析功能,能夠與企業(yè)現(xiàn)有業(yè)務(wù)系統(tǒng) OA, ERP,MES,CRM 等應(yīng)用系統(tǒng)深度集成,整合、分析多個(gè)業(yè)務(wù)系統(tǒng)的數(shù)據(jù),自助式分析業(yè)務(wù)數(shù)據(jù)、實(shí)時(shí)分析決策,全面提升企業(yè)競爭力。

Spread .NET 是一個(gè)功能、布局與 Excel 高度類似的 .NET 表格控件,可全面滿足 WinForm、ASP.NET、XAML 和 WinRT 等平臺下表格數(shù)據(jù)處理、數(shù)據(jù)可視化開發(fā)需求。Spread .NET 支持 462 種 Excel 公式,提供可嵌入系統(tǒng)的類 Excel 設(shè)計(jì)器和全面開放的 API,為 .NET 開發(fā)人員構(gòu)建企業(yè)級表格應(yīng)用程序提供更加專業(yè)的選擇。

參考資料:https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-8#networking

END

分享到:
標(biāo)簽:NET
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定