Nyheter i .NET 9
Lär dig mer om de nya funktionerna i .NET 9 och hitta länkar till ytterligare dokumentation.
.NET 9, efterföljare till .NET 8, har ett särskilt fokus på molnbaserade appar och prestanda. Det kommer att stöttas i 18 månader som en STS-version (standard-term support). Du kan ladda ned .NET 9 här.
Nytt för .NET 9 är att teknikteamet kommer att publicera förhandsversionsuppdateringar för .NET 9 på GitHub Discussions. Det är ett bra ställe att ställa frågor och ge feedback om versionen.
.NET-körning
.NET 9-runtime innehåller en ny attributmodell för funktionsomkopplare med trimningsstöd. De nya attributen gör det möjligt att definiera funktionsväxlar som bibliotek kan använda för att växla funktioner.
Funktionen för skräpinsamling inkluderar dynamisk anpassning till programstorleken, som används som standard i stället för Server GC.
Körtiden innehåller också många prestandaförbättringar, inklusive loop-optimeringar, inlining och Arm64-vektorisering och kodgenerering.
För mer information, se Vad som är nytt i .NET 9-körmiljön.
.NET-bibliotek
System.Text.Json lägger till stöd för ogiltiga referenstypanteckningar och export av JSON-scheman från typer. Den lägger till nya alternativ som gör att du kan anpassa indraget för skrivet JSON och läsa flera JSON-värden på rotnivå från en enda ström.
I LINQ gör de nya metoderna CountBy och AggregateBy det möjligt att aggregera tillstånd efter nyckel utan att behöva allokera mellanliggande grupper via GroupBy.
För samlingstyper innehåller System.Collections.Generic.PriorityQueue<TElement,TPriority> typ en ny Remove(TElement, TElement, TPriority, IEqualityComparer<TElement>) metod som du kan använda för att uppdatera prioriteten för ett objekt i kön.
För kryptografi lägger .NET 9 till en ny hash-metod med ett skott på den CryptographicOperations typen. Den lägger också till nya klasser som använder KMAC-algoritmen.
Med den nya PersistedAssemblyBuilder typen kan du spara en genererad sammansättning. Den här nya klassen innehåller även PDB-stöd, vilket innebär att du kan generera symbolinformation och använda den för att felsöka en genererad sammansättning.
Klassen TimeSpan innehåller nya From*
metoder som gör att du kan skapa ett TimeSpan
objekt från en int
(i stället för en double
). Dessa metoder hjälper till att undvika fel som orsakas av inneboende imprecisionsproblem i flyttalsberäkningar.
Mer information finns i Nyheter i .NET 9-biblioteken.
.NET SDK
.NET 9 SDK introducerar arbetsbelastningsuppsättningar, där alla dina arbetsbelastningar finns i en enda, specifik version tills de uttryckligen uppdateras. För verktyg kan ett nytt alternativ för dotnet tool install
låta användare (i stället för verktygsförfattare) avgöra om ett verktyg tillåts köras på en nyare .NET-körningsversion än den version som verktyget riktar sig mot. Ytterligare:
- Enhetstestning har bättre MSBuild-integrering som gör att du kan köra tester parallellt.
- NuGet-säkerhetsgranskningar körs på både direkt- och transitiva paketreferenser som standard.
- Terminalloggern är aktiverad som standard och har även förbättrad användbarhet. Till exempel sammanfattas det totala antalet fel och varningar nu i slutet av en version.
- Nya MSBuild-skriptanalysverktyg ("build checks") är tillgängliga.
- SDK:t kan identifiera och justera för versionsmatchningar mellan .NET SDK och MSBuild.
- Kommandot
dotnet workload history
visar historiken för arbetsbelastningsinstallationer och ändringar för den aktuella .NET SDK-installationen.
Mer information finns i Nyheter i SDK för .NET 9.
AI-byggstenar
.NET 9 introducerar ett enhetligt lager av C#-abstraktioner via paketen Microsoft.Extensions.AI och Microsoft.Extensions.Vector Data. Dessa abstraktioner underlättar interaktionen med AI-tjänster, inklusive små och stora språkmodeller (SLA och LLM), inbäddningar, vektorlager och mellanprogram.
.NET 9 innehåller även nya tensortyper som utökar AI-funktionerna. TensorPrimitives och den nya Tensor<T> typen expanderar AI-funktioner genom att möjliggöra effektiv kodning, manipulering och beräkning av flerdimensionella data. Du hittar dessa typer i den senaste versionen av System.Numerics.Tensors-paketet.
TensorPrimitives
- Utökat metodomfång: Ökade från 40 till nästan 200 överlagringar, nu inklusive numeriska operationer som liknar
Math
,MathF
ochINumber<T>
men för värdespann. - Prestandaförbättringar: Många åtgärder är nu SIMD-optimerade för bättre prestanda.
- Allmänna överlagringar: Stöder alla typer
T
som implementerar ett visst gränssnitt och expanderar bortom bara intervall med flyttalsvärden i .NET.
Tensor<T>
- Bygger ovanpå
TensorPrimitives
för effektiva matematiska åtgärder. - Ger ett effektivt interop med AI-bibliotek (ML.NET, TorchSharp, ONNX Runtime) med noll kopior där det är möjligt.
- Möjliggör enkel och effektiv datamanipulering med indexerings- och segmenteringsåtgärder.
- Är experimentell i .NET 9.
ML.NET
ML.NET är ett plattformsoberoende ramverk med öppen källkod som möjliggör integrering av anpassade maskininlärningsmodeller i .NET-program.
ML.NET 4.0 medför följande förbättringar:
- Nya sätt att programmatiskt konfigurera
MLContext
alternativ. - Läs in ONNX-modeller som
Stream
. - Förbättringar av DataFrame.
- Nya funktioner för tokeniserare.
- (Experimentell) TorchSharp-versioner av Llama- och Phi-familjen av modeller.
- (Experimentell) CausalLM-pipeline-API.
Mer information finns i Nyheter i ML.NET.
Tokenizers
Microsoft.ML.Tokenizers-biblioteket ger .NET-utvecklare funktioner för kodning och avkodning av text till token. För AI-scenarier är detta viktigt för att hantera kontext, beräkna kostnader och förbearbeta text när du arbetar med lokala modeller.
Den senaste versionen introducerar betydande nya funktioner för tokenizers:
- Tiktoken för GPT-modeller (3, 3,5, 4, 4o, o1) och Llam3
- Llama (baserat på SentencePiece) för Llama- och Mistral-modeller
- CodeGen för kodgenereringsmodeller som codegen-350M-mono
- Phi2 (baserat på CodeGen) för Microsoft Phi2-modell
- WordPiece
- Bert (baserat på WordPiece) för Bert-stödda modeller som optimum--all-MiniLM-L6-v2
.NET Aspire
.NET Aspire är en uppsättning kraftfulla verktyg, mallar och paket för att skapa observerbara, produktionsklara appar. .NET Aspires senaste version innehåller förbättringar av instrumentpanelen och resurslivscykelhanteringen. Det lägger också till nya integreringar och API:er för mer flexibilitet under utvecklingen. .NET Aspire 9 fungerar med både .NET 9- och .NET 8-appar. Mer information finns i Nyheter i .NET Aspire 9.
ASP.NET Core
ASP.NET Core-appar som skapats med .NET 9 är säkra som standard, har utökat stöd för kompilering i förväg och har förbättrad övervakning och spårning. Med prestandaförbättringarna ser du högre dataflöde och snabbare starttid, och allt med mindre minnesanvändning. ASP.NET Core i .NET 9 innehåller:
- Optimerad hantering av statiska filer, till exempel JavaScript och CSS, vid bygg- och publiceringstid med automatisk versionshantering med fingeravtryck.
- Blazor: Nya hybrid- och webbappmallar, identifiering av komponentåtergivningsläge, ny återanslutningsupplevelse med serverrendering.
- API:er: Inbyggt stöd för OpenAPI-dokumentgenerering med hjälp av
Microsoft.AspNetCore.OpenAPI
, förbättrat inbyggt AOT-stöd. - Förbättrad säkerhet med nya API:er för autentisering och auktorisering.
- Enklare installation för certifikat för betrodd utveckling i Linux för att aktivera HTTPS under utvecklingen.
Det här är bara några av funktionerna och förbättringarna i .NET 9. Mer information finns i Nyheter i ASP.NET Core 9.0.
.NET MAUI
Fokus för .NET Multi-Platform App UI (.NET MAUI) i .NET 9 är förbättrad prestanda och tillförlitlighet samt djupare integreringar för skrivbords- och mobilprogram. .NET MAUI innehåller en ny, mer högpresterande implementering av CollectionView och CarouselView för iOS och Mac Catalyst, uppdateringar av befintliga kontroller, nya applivscykelhändelser och interna AOT- och trimningsförbättringar för att förbättra appens storlek och starttid. Ytterligare:
- En ny TitleBar skrivbordskontroll är tillgänglig för Windows.
- En ny HybridWebView kontroll möjliggör enklare inkludering av JavaScript-aktiverat innehåll från ramverk som ReactJS, Vue.jsoch Angular.
- Entry stöder nu ytterligare tangentbordslägen.
- Kontrollhanterare kopplar automatiskt från sina kontroller när det är möjligt.
- MainPage har utgått till förmån för att använda appens primära sida genom att åsidosätta Application.CreateWindow(IActivationState)-klassen.
För mer information om dessa nya funktioner och annat, se Nyheter i .NET MAUI för .NET 9.
EF Core
Entity Framework Core innehåller betydande uppdateringar av databasprovidern för Azure Cosmos DB för NoSQL. Den innehåller också några steg mot AOT-kompilering och förkompilerade frågor, bland andra förbättringar. För mer information, se Nyheter i EF Core 9.
C# 13
C# 13 levereras med .NET 9 SDK och innehåller följande nya funktioner:
-
params
samlingar - Ny
lock
typ och semantik - Ny escape-sekvens –
\e
- Förbättringar av metodgruppens naturliga typer
- Implicit indexer-åtkomst i objektinitierare
- Aktivera
ref
lokala ochunsafe
kontexter i iteratorer och asynkrona metoder - Aktivera
ref struct
typer för att implementera gränssnitt - Tillåt referensstruktureringstyper som argument för typparametrar i generiska objekt.
- Partiella egenskaper och indexerare tillåts nu i
partial
typer. - Med prioritet för överbelastning kan biblioteksförfattare ange en överbelastning som bättre än andra.
Dessutom lägger C# 13 till en förhandsversionsfunktion: field
-stödda egenskaper.
Mer information finns i Nyheter i C# 13.
F# 9
F# 9 levereras med .NET 9 SDK och innehåller följande nya funktioner:
- Referenstyper som kan ogiltigförklaras
- Diskriminerad union. Is*-egenskaper
- Partiella aktiva mönster kan returnera bool i stället för enhetsalternativ
- Föredrar tilläggsmetoder än inbyggda egenskaper när argument tillhandahålls
- Tomma beräkningsuttryck
- Hash-direktiv tillåts ta argument som inte är strängar
- Utökat direktivet #help i fsi för att visa dokumentationen i REPL (read-eval-print loop)
- Tillåt #nowarn att stödja FS-prefixet på felkoder för att inaktivera varningar
- Varning om TailCall-attribut för icke-rekursiva funktioner eller let-bound-värden
- Framtvinga attributmål
- Slumpmässiga funktioner för samlingar
- Stöd för C#-samlingsuttryck för F#-listor och -uppsättningar
- Olika förbättringar av produktivitet, prestanda och verktyg för utvecklare
För mer information, se Nyheter i F# 9.
Windows Presentation Foundation
WPF i .NET 9 ger förbättrat stöd för att skapa moderna appar med flera temaförbättringar och mycket mer:
- Stöd för Temat Windows Fluent.
- Temastöd för ljus- och mörklägen i Windows har lagts till.
- Teman stöder Windows accentfärg nu.
- Teckenåtergivningen har förbättrats för att stödja bindestrecksbaserade ligaturer.
-
BinaryFormatter
stöds inte längre.
Mer information finns i Nyheter i WPF för .NET 9.
Windows-formulär
WinForms i .NET 9 ger stöd för nya teman, förbättringar för asynkron utveckling med mera:
-
Form
ochTaskDialog
stödShowDialogAsync
nu. (Experimentell funktion) -
BinaryFormatter
stöds inte längre. - Experimentellt stöd för att återge appen i mörkt läge, vilket stöds av Windows.
-
FolderBrowserDialog
ochToolStrip
hade några mindre förbättringar. - Biblioteket System.Drawing har haft många förbättringar, inklusive omslutning av GDI+-effekter, stöd för
ReadOnlySpan
och bättre interop-kodgenerering.
Mer information finns i Nyheter i Windows Forms för .NET 9.