{"id":52697,"date":"2024-07-15T10:05:00","date_gmt":"2024-07-15T17:05:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet\/?p=52697"},"modified":"2024-12-13T14:18:10","modified_gmt":"2024-12-13T22:18:10","slug":"dotnet-9-preview-6","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-9-preview-6\/","title":{"rendered":".NET 9 Preview 6 is now available!"},"content":{"rendered":"<p>It&#8217;s a great time to check out the latest .NET 9 Preview! We just shipped our sixth preview release, adding to some great features in the previous previews with major enhancements across the .NET Runtime, SDK, libraries, C#, and frameworks including ASP.NET Core, Blazor, and .NET MAUI. Check out the full release notes linked below and get started today.<\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/dotnet.microsoft.com\/download\/dotnet\/9.0\" target=\"_blank\">Download .NET 9 Preview 6<\/a><\/div><\/p>\n<p>This release contains the following improvements:<\/p>\n<p><strong>\ud83d\udcdaLibraries:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#improvements-to-systemnumerics\">Improvements to System.Numerics<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#support-primary-constructors-in-logging-source-generator\">Support Primary Constructors in Logging Source Generator<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#systemtextjson\">System.Text.Json enhancements<\/a> including a new <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#jsonschemaexporter\">JsonSchemaExporter<\/a>, <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#respecting-nullable-annotations\">nullable annotations recognition<\/a>, <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#requiring-non-optional-constructor-parameters\">requiring non-optional constructor parameters<\/a>, <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#ordering-jsonobject-properties\">ordering <code>JsonObject<\/code> properties<\/a>, and new <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#additional-contract-metadata-apis\">contract metadata APIs<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#generatedregex-on-properties\"><code>[GeneratedRegex]<\/code> can now be used on properties<\/a><\/li>\n<li>New <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#regexenumeratesplits\"><code>EnumerateSplits<\/code><\/a> method for <code>Regex<\/code> to split more collection types<\/li>\n<li>Introduction of generic <code>OrderedDictionary<\/code> with <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#ordereddictionarytkey-tvalue\"><code>OrderedDictionary&lt;TKey, TValue&gt;<\/code><\/a> <\/li>\n<li>New <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#readonlysett\"><code>ReadOnlySet&lt;T&gt;<\/code><\/a> when needing to create a read-only wrapper around <code>ISet&lt;T&gt;<\/code><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#allows-ref-struct-used-in-many-places-throughout-the-libraries\"><code>allows ref struct<\/code> used in many places throughout the libraries<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#collection-lookups-with-spans\">Collection lookups with spans<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#more-span-based-apis\">More span-based APIs<\/a> including <code>StartsWith<\/code> and <code>EndsWith<\/code> extension methods<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#base64url\">Base64Url<\/a> for optimized encoding and decoding<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#socketshttphandler-by-default-in-httpclientfactory\">SocketsHttpHandler by default in HttpClientFactory<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#tls-resume-with-client-certificates-on-linux\">TLS resume with client certificates on Linux<\/a><\/li>\n<li>New <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#systemnetserversentevents\"><code>System.Net.ServerSentEvents<\/code><\/a> library providing a parser for easily ingesting server-sent events<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md#introducing-the-metrics-gauge-instrument\">Introducing the Metrics Gauge Instrument<\/a> in <code>System.Diagnostics.Metrics<\/code> to record non-additive values when changes occur<\/li>\n<li>Full <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/libraries.md\">release notes<\/a><\/li>\n<\/ul>\n<p><strong>\u23f1\ufe0fRuntime:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/runtime.md#arm64-code-generation\">ARM64 Code Generation<\/a> now adds ability to store operations<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/runtime.md#code-layout\">Code Layout<\/a> &#8211; RyuJIT&#8217;s block reordering algorithm with a simpler, more global approach<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/runtime.md#loop-optimizations\">Loop Optimizations<\/a> for code size reduction and performance improvements<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/runtime.md#reduced-address-exposure\">Reduced Address Exposure<\/a> through RyuJIT improvements to better track usage of local variable address<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/runtime.md#avx10v1-support\">AVX10v1 Support<\/a>, a new SIMD instruction set from Intel<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/runtime.md#hardware-intrinsic-code-generation\">Hardware Intrinsic Code Generation<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/runtime.md#constant-folding-for-floating-point-and-simd-operations\">Constant Folding for Floating Point and SIMD Operations<\/a><\/li>\n<li>Full <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/runtime.md\">release notes<\/a><\/li>\n<\/ul>\n<p><strong>\ud83d\udee0\ufe0fSDK<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/sdk.md#nugetaudit-now-raises-warnings-for-vulnerabilities-in-transitive-dependencies\">NuGetAudit now raises warnings for vulnerabilities in transitive dependencies<\/a><\/li>\n<li>Addition of <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/sdk.md#dotnet-nuget-why\"><code>dotnet nuget why<\/code><\/a> to find out why a transitive package is being used in your project<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/sdk.md#msbuild-buildchecks\">MSBuild BuildChecks<\/a> to help users enforce rules and invariants during their builds<\/li>\n<li>Full <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/sdk.md\">release notes<\/a><\/li>\n<\/ul>\n<p>You can find detailed release notes for additional features in .NET 9 Preview 6 below:<\/p>\n<h2>C#<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/csharp.md#partial-properties\">Partial properties<\/a><\/li>\n<li>Full <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/csharp.md\">release notes<\/a><\/li>\n<\/ul>\n<h2>\ud83c\udf10ASP.NET Core<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#fingerprinting-of-static-web-assets\">Fingerprinting of static web assets<\/a> ensuring that stale assets aren&#8217;t used and enables improved caching behavior for faster load time<\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#improved-distributed-tracing-for-signalr\">Improved distributed tracing for SignalR<\/a> with a new <code>ActivitySource<\/code><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#enhancements-to-microsoftaspnetcoreopenapi\">Enhancements to Microsoft.AspNetCore.OpenAPI<\/a> including <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#completion-enhancements-and-package-install-recommendations-for-openapi-package\">completion enhancements<\/a>, support for <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#support-for-required-and-defaultvalue-attributes-on-parameters-or-properties\"><code>[Required]<\/code> and <code>[DefaultValue]<\/code> attributes<\/a>, <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#support-for-schema-transformers-on-openapi-document\">schema transforms<\/a> on OpenAPI documents, <\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#analyzer-to-warn-when-authorize-is-overridden-by-allowanonymous-from-farther-away\">Analyzer to warn when <code>[Authorize]<\/code> is overridden by <code>[AllowAnonymous]<\/code><\/a>, and new <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#analyzer-to-warn-when-authorize-is-overridden-by-allowanonymous-from-farther-away\">analyzers<\/a>, <\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#componentplatform-renamed-to-rendererinfo\"><code>ComponentPlatform<\/code> renamed to <code>RendererInfo<\/code><\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md#split-large-http2-headers-across-frames\">Split large HTTP\/2 headers across frames<\/a><\/li>\n<li>Full <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/aspnetcore.md\">release notes<\/a><\/li>\n<\/ul>\n<h2>\ud83d\udcf1.NET MAUI<\/h2>\n<ul>\n<li>Full <a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/preview\/preview6\/dotnetmaui.md\">release notes<\/a><\/li>\n<\/ul>\n<h2>\ud83d\ude80Get started<\/h2>\n<p>To get started with .NET 9, <a href=\"https:\/\/dotnet.microsoft.com\/download\/dotnet\/9.0\">install the .NET 9 SDK<\/a>.<\/p>\n<p>If you&#8217;re on Windows using Visual Studio, we recommend installing the latest <a href=\"https:\/\/visualstudio.microsoft.com\/vs\/preview\/\">Visual Studio 2022 preview<\/a>, or get started with Visual Studio Code and the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-dotnettools.csdevkit\">C# Dev Kit<\/a> extension.<\/p>\n<h2>\ud83d\udce2Team Announcements &amp; Discussions<\/h2>\n<p>The team has been making <a href=\"https:\/\/github.com\/dotnet\/core\/discussions\/9234\">monthly announcements<\/a> alongside full <a href=\"https:\/\/github.com\/dotnet\/core\/tree\/main\/release-notes\/9.0\">release notes<\/a> on the <a href=\"https:\/\/github.com\/dotnet\/core\/discussions\/categories\/news\">dotnet\/core GitHub Discussions<\/a> and has seen great engagement and feedback from the community. We will continue to post each new release on GitHub, but as we get closer to launch this November alongside <a href=\"https:\/\/www.dotnetconf.net\/\">.NET Conf 2024 (save the date today!)<\/a>, we wanted to cross-post our release details on the .NET blog. <\/p>\n<p>Discuss this release with the product teams on GitHub through the GitHub discussion announcement for this release.<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/discussions\/9392\">.NET 9 Preview 6 Discussion<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/runtime\/discussions\/104620\">.NET Libraries &amp; Runtime Discussion<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/maui\/discussions\/23506\">.NET MAUI Discussion<\/a> <\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/aspnetcore\/discussions\/56690\">ASP.NET Core Discussion<\/a><\/li>\n<\/ul>\n<h2>\ud83d\udd14Stay up to date with .NET 9<\/h2>\n<p>You can stay up-to-date with all the features of .NET 9 with:<\/p>\n<ul>\n<li><a href=\"https:\/\/learn.microsoft.com\/dotnet\/core\/whats-new\/dotnet-9\/overview\">What&#8217;s new in .NET 9<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/dotnet\/csharp\/whats-new\/csharp-13\">What&#8217;s new in C# 13<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/aspnet\/core\/release-notes\/aspnetcore-9.0\">What&#8217;s new in ASP.NET Core<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/dotnet\/maui\/whats-new\/dotnet-9\">What&#8217;s new in .NET MAUI<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/ef\/core\/what-is-new\/ef-core-9.0\/whatsnew\">What&#8217;s new in EF Core<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/dotnet\/core\/compatibility\/9.0\">Breaking Changes in .NET 9<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dotnet\/core\/blob\/main\/release-notes\/9.0\/README.md\">.NET 9 Releases<\/a><\/li>\n<\/ul>\n<p>Additionally, be sure to subscribe to the GitHub Discussions <a href=\"https:\/\/github.com\/dotnet\/core\/discussions\/categories\/news.atom\">RSS news feed<\/a> for all release announcements.  <\/p>\n<p>We want your feedback, so head over to the <a href=\"https:\/\/github.com\/dotnet\/core\/discussions\/9392\">.NET 9 Preview 6 GitHub Discussion<\/a> to discuss features and give feedback for this release.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Try out the latest features in .NET 9 Preview 6 across the .NET runtime, SDK, libraries, ASP.NET Core, Blazor, and more!<\/p>\n","protected":false},"author":11288,"featured_media":52769,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[685,7233,7509,7251,756],"tags":[7797],"class_list":["post-52697","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-maui","category-aspnetcore","category-blazor","category-csharp","tag-dotnet-9"],"acf":[],"blog_post_summary":"<p>Try out the latest features in .NET 9 Preview 6 across the .NET runtime, SDK, libraries, ASP.NET Core, Blazor, and more!<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/52697","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/11288"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=52697"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/52697\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/52769"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=52697"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=52697"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=52697"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}