今天,我们很高兴地宣布 .NET 历史上的下一个里程碑。在庆祝社区和 20 年创新的同时,.NET 7 Preview 1 标志着迈向 .NET 下一个 20 年的第一步。
ASP.NET Core Preview 1 和 EF7 Preview 1 也在今天发布。
NET 7は. NET 6で構築された基盤の上に構築され、統合された基礎ライブラリ、ランタイム、SDKセットを含み、開発者の生産性を向上させます。NET 7の主な焦点分野には、クラウドネイティブシナリオのサポートの改善、古いプロジェクトのためのツールのアップグレードの容易さ、コンテナの使用を容易にすることによる開発者エクスペリエンスの合理化などがあります。
NET 7 Preview 1には、APIのnull可能性アノテーションのサポート、継続的なJITコンパイラの最適化、新しいAPI、より多くのホットオーバーロードシナリオのサポートが含まれています。
NETエディションには、マイクロソフト内外の複数のチーム間のコラボレーションを表す製品、クラスライブラリ、ランタイム、ツールが含まれています。このブログ記事でカバーする広範なトピックは、. NET 7の主要なシナリオと投資のすべてをカバーしていません。これらは大きな領域ですが、. NET 7に移行するための重要な作業のほんの一部に過ぎません。ASP.NET Core、Blazor、EF Core、Win Forms、WPF、その他のプラットフォームへの大規模な投資を計画しており、これらの分野の詳細については製品ロードマップをご覧ください。
- ASP.NET Core、Blazor 和 Orleans
- EF7
- ML.NET
- .NET MAUI
- WinForms
- WPF
- NuGet
- [Roslyn](https://github.com/dotnet/roslyn/blob/main/docs/Language Feature Status.md)
您可以下载适用于 Windows、macOS 和 Linux 的 .NET 7 Preview 1 。
.NET 7 已通过 Visual Studio 17.2 预览版 1 进行测试。如果您想在 Visual Studio 系列产品中试用 .NET 7,我们建议您使用预览频道版本。Visual Studio for Mac 对 .NET 7 预览版的支持尚不可用,但即将推出。
最新のクライアント. NET Multip-Platform Application UI. NET MAUI
.NET MAUI 是 .NET 跨平台原生 UI 的未来,将成为 .NET 7 的一部分。周二,我们发布了.NET MAUI Preview 13。我们目前专注于为 .NET 6 提供 .NET MAUI 支持,我们预计很快会提供一个候选版本 (RC)。在我们有可用的 RC 后,我们将专注于发布额外的 RC,直到我们达到一般可用性 (GA) 所需的稳定性。在 .NET MAUI GA 为 .NET 6 发布后,我们将把它包含在 .NET 7 中,并着眼于改进内部开发循环体验、支持最新的 .NET SDK 工具、更快的应用程序性能、共享更多代码以及增强的互操作等主题。查看.NET MAUI 的状态和项目路线图以获取更多信息。
最新のクラウド:コンテナとクラウドネイティブ
从零开始构建云原生应用程序,利用基于 Web 的现代资源,例如数据库服务和托管容器。云原生架构可以通过创建独立于应用程序的其他区域进行部署和扩展的自治子系统(通常称为微服务)来提高大型应用程序的规模,同时降低长期成本。微服务架构是一种流行的方法,因为它很灵活,旨在发展和扩展至单体架构中难以实现的极限。
NET 7は、以下のような開発者エクスペリエンスの改善を探求することで、クラウドネイティブアプリケーションの構築を容易にします。
- 安全な認証と認可の実装に必要なセットアップと構成をシンプル化
- アプリケーションの起動時および実行時のパフォーマンスを向上させます。
我们将继续投资Orleans,这是一个 .NET 跨平台框架,用于构建被称为 “分布式 .NET” 的分布式应用程序。我们将继续增强 Orleans 的综合文档,并通过改进 Orleans 与Azure App Services和Azure Container Apps等现有云服务的集成,使其更易于使用和实施。
コンテナは、今日の多くの企業がクラウドネイティブアプリケーションやマイクロサービスをデプロイする好ましい方法です。コンテナに依存すると、互換性の管理、イメージのビルドと公開、イメージの安全性の向上、イメージのサイズとパフォーマンスの簡素化など、いくつかの課題が発生します。. NETコンテナでより良いエクスペリエンスを生み出す機会があると考えています。
お客様がこれらの課題に対処できるよう、. NET 7のコンテナを使用した. NET開発を大幅に改善する予定です。例えば、MSBuild経由でSDKとして直接コンテナをビルドする新機能を見ていきます。コンテナの観測性を向上させるためにテレメトリを強化する予定です。また、コンテナイメージの小型化、高速化、安全化にも注力し、ルートレスや長距離レスなどの要求の厳しいアプリケーションモデルを探求していきます。
近代化:. NETアプリケーションのアップグレード
自 .NET 6 发布以来,开发人员一直在升级他们的应用程序,以利用新的性能提升、最小 API 和热重载等生产力特性、新的运行时和 C# 语言创新以及成熟的库和工具生态系统的可用性。在 .NET 7 中,我们将继续使您能够将现有的 .NET 应用程序升级到最新的 .NET 平台和技术。.NET 升级助手中的更多分析器、代码修复程序和对其他应用程序类型的支持将帮助您自信地升级更多应用程序组合,并减少升级所涉及的重复性任务的时间。
また、各. NETアプリケーションモデル(ASP.NET、Win Forms、WPFなど)には、近代化の観点から固有の課題があり、開発者が必要とする機能やプラットフォーム自体のサポートが不足している可能性があります。WCFのように、明確な方向性がない場合もあります。これらの. NETアプリケーションモデルをアップグレードしやすくするための適切なガイダンス、ドキュメント、ツールを提供することに焦点を当てます。
サポートする。
.NET 7 是 Current 版本,这意味着它将在发布之日起 18 个月内获得免费支持和补丁。请务必注意,所有版本的质量都是相同的。LTS 和当前版本之间的唯一区别是支持的长度。有关 .NET 支持政策的更多信息,请参阅.NET 和 .NET Core 官方支持政策。
主な変更点
您可以通过阅读 .NET 7 中的重大更改文档找到最新的 .NET 7 重大更改列表。它按区域和版本列出了重大更改,并附有详细说明的链接。
要查看提出了哪些重大更改但仍在审核中,请关注Proposed .NET Breaking Changes GitHub 问题。
プレビュー 1。
Preview 1では以下の機能が提供されます。
Microsoft.Extensionsの空の注釈
Microsoft. Extensions.* を使用しています。空性を実現するための注釈の追加が進んでいる。. NET 7 Preview 1では、次のライブラリが空可能性についてコメントされています。
- Microsoft.Extensions.DependencyInjection.Abstractions
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Primitives
- Microsoft.Extensions.FileSystemGlobbing
- Microsoft.Extensions.DependencyModel
- Microsoft.Extensions.Configuration.Abstractions
- Microsoft.Extensions.FileProviders.Abstractions
- Microsoft.Extensions.FileProviders.Physical
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Configuration.Binder
- Microsoft.Extensions.Configuration.CommandLine
- Microsoft.Extensions.Configuration.EnvironmentVariables
- Microsoft.Extensions.Configuration.FileExtensions
- Microsoft.Extensions.Configuration.Ini
- Microsoft.Extensions.Configuration.Json
到 .NET 7 发布时,我们计划为所有 Microsoft.Extensions.* 库添加可空性注释。您可以查看剩余的库,并在dotnet/runtime#43605处关注进度。
この仕事に多大な貢献をしてくれた@maxkoshevoiに感謝します。@maxkoshevoiの助けがなければ、私たちはここまで来なかったでしょう。
観測可能性は
トラッキングAPIの改善を続ける:
- 添加 ActivityContext.TryParse 重载以允许解析和创建 ActivityContext 对象,包括是否从远程父级传播活动上下文(相关问题)。
- 添加 Activity.IsStopped() 指示 Activity 对象是否停止的方法(相关问题)。
コードの生成
コミュニティPR(JITコミュニティの貢献者に感謝します!)
@ am 11より
将一些旧式内部函数转换为 NamedIntrinsic runtime#62271
より@anthonycanino
将额外的二进制操作添加到 RangeCheck 分析中。runtime#61662
SeanWooより
[JIT] [问题:61620] 针对 *x = dblCns 优化 ARM64;runtime#61847
@SingleAccretionより
より良い実行時の浮動小数点CSEランタイムの調整#6390 3 サイズ変更時に新しいCSEのハッシュランタイムを更新#61984 フィールド選択を上書きし、VNで常にSIMDタイプruntime #61370を正規化 VNがメモリを番号付ける方法に関するドキュメントを追加runtime #60 4 7 6 数値のキャストruntimeの改善#59 8 41 ブロックmorphing内の複雑なローカルアドレスの下のアドレスはローカル変数runtime #63100を公開します。 埋め込み割り当て処理中のコピー伝播runtime #6344 7 例外セット:デバッガのチェックと修正runtime #635 3 9 emitOutputAMでの“moffset”エンコーディングサイズ最適化runtimeの実装#628 9 6 オペランド種配列の圧縮とOperIsLocal runtimeの最適化#632 5 3 gtHasRefをLCL_FLDノードにフォーカスさせるruntime #62568 GT_LCL_FLDのグローバル定数伝播の有効化runtime #612 0 9 小規模型のグローバル定数伝播を有効にするruntime #57 7 2 6 fgMemoryVNForLoopSideEffectsプロパティタイプメインセレクター runtime #6050 5
来自@RalfKornmannEnvision
ARM 64とUnixランタイム#41023をサポート
@weilinwaより
オーバーライドに基づくFMAコード生成runtime #58 196
ダイナミック·PGO Arm64のOSRサポート JIT:同期方式をサポートするOSR JIT:OSR、PGO、テールコールの相互作用を処理する 2009年のJitアーキテクチャプランの追加(抜粋) JIT:いくつかのrelopsの限定版の前方置換 JIT:後の仮想化のためのジェネリックコンテキストの保存 Arm64 Arm64:メモリバリアの改善 写真はこちら
InitBlkUnroll/CopyBlkUnrollでSIMD 操作を使用し、展開制限を128バイトに増やします [Arm64] InitBlockとCopyBlockを最大128バイトまで展開 'cmeq'と'fcmeq' Vector 64. Zero/Vector 128. Zero ARM64に最適化が含まれます。 [arm64] JIT: X % 2 == 0 -> X & 1 == 0 [arm64] JIT:シンボル/ゼロ拡張を追加 [arm64] JIT:“arrayBase + elementOffset”のCSE/昇格を有効にする [arm64] JIT:“A * B + C”をMADD/MSUBに折りたたむ サイクル最適化 汎化ループ前ヘッダ作成とループ昇格 循環リファクタリングとコメントの改善 一般最適化 その他のクロスプラットフォームハードウェア組み込み機能の高速化 SIMDAs HWIntrinsicによるNarrowとWidenの実装 IsKnownConstant jitヘルパーを追加し、str.StartsWith 'c'を使用して'str =='''を最適化する JITがHFA/HVAをパラメータ/戻り値として渡したときにレジスタに保持できるようにする Vector64/128/256のnint/nuintのサポートを有効にする X86Base. PauseとArmBase.Yieldのサポートを追加 PALの優先領域をJIT relocプロンプトに使用する R2Rでの高速テールコールのサポート x 64でのテールコールに間接アドレス指定を含めることができる より一般的には間接ユニット呼び出しシーケンスの最適化 デリゲート呼び出しの追加ローカル作成を避ける 相互運用性:p/Invokeコード生成 NET 6でプロトタイプ化したp/invokeソースジェネレータをdotnet/runtimeに統合し、ランタイム·ライブラリを変換して使用します。つまり、変換されたp/invokesはAOT互換であり、実行時にILスタブを生成する必要がなくなります。
将来的にはp/invokeソースジェネレータをランタイム外で利用できるようにする予定です。残りの作業はdotnet/runtime #60 5 9 5でご覧いただけます。
System. Text. Jsonの新しいAPI System. Text. Jsonにはいくつかの小さなライフサイクル拡張があります。
開発者はSystem. Text. Json内部で使用されているデフォルトのシングルトンJson Serializer Optionsにアクセスできるようになりました(関連する問題)。 JsonWriterOptions.MaxDepthプロパティを追加し、この値が直列化されたJsonSerializerOptions.MaxDepthと同等のプロパティから取得されることを確認します関連する問題。 System. Net. Http.JsonにPatchメソッドを追加します関連する問題。 ホットオーバーロードの改善 Blazor Web Assembly用のC#ホットオーバーロードおよびiOSおよびAndroid用の. NET用の以下の編集が可能になりました(関連する問題)。
既存メソッドへの静的ラムダの追加 これをキャッチするラムダを、少なくとも1つのラムダを持つ既存のメソッドに追加します。 既存のクラスへの新しい静的または非仮想インスタンスメソッドの追加 既存のクラスへの新しい静的フィールドの追加 新しいクラスの追加 既知の問題:
新規クラスのインスタンスフィールドはサポートされていません 既存または新規のクラスに新しく追加されたメソッドとフィールドはリフレクションに表示されません 私たちの進捗状況はdotnet/runtime #573 65でご覧いただけます。
指定. NET 7 NET 7を使用するには、プロジェクトファイルで. NET 7 Target Framework Moniker TFMを使用する必要があります。例えば:
net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows NET 6から. NET 7へのアップグレードは簡単であると期待しています。. NET 7を使用して既存のアプリケーションをテストした際に見つかった大きな変更を報告してください。
おわりにまとめ マイクロソフトのグローバルで多様なエンジニアチームは、非常に関与した開発者コミュニティと協力して. NET 7を構築しています。学生や愛好家からオープンソースのコントリビューター、エンタープライズ顧客まで、幅広い. NETコミュニティが. NETの中心であり、新しいアイデアを生み出し、定期的にコードを貢献し、. NETエコシステムを前進させています。皆様のご支援、貢献、洞察に感謝いたします。
NET 7へようこそ。