2021-08-13

Published on Friday, 13 August 2021

ニュース

.NET 6 Preview 7 と Visual Studio 2022 Preview 3 のリリース

.NET 6 Preview 7 と Visual Studio 2022 Preview 3 のリリースされました。

.NET のライブラリ/ランタイムの強化と C# 10 の新しい機能が多く入っています。String Interpolation の強化 は従来の FormattableString に代わるアロケーションを抑え、柔軟なカスタマイズが行える仕組みなので活用の幅は広そうです。

.NET 6 API 100% annotated for Null reference types とのことで .NET 6 のすべての API で Nullable アノテーションが対応されました。それもあってか Visual Studio で新しいプロジェクトを作ったときに Nullable はデフォルトで enable となるようです。

.NET 6 のリリースは 11月9日から11日まで行われる .NET Conf 2021 でローンチとなるようです。

ReSharper 2021.2 と Rider 2021.2 のリリース

ReSharper 2021.2 と Rider 2021.2 のリリースではコード解析の改善と Source Generator 対応などが行われています。ReSharper は Visual Studio 2022 サポート版が、Rider では Apple Silicon 版がプレビューリリースされています。

Visual Studio 2019 v16.11 と .NET のセキュリティアップデートのリリース

Visual Studio 2019 v16.11 がリリースされましたが、目立った変更は .NET Hot Reload のサポートぐらいで小さめのリリースとなっています。 また、16.11 が 2019 (v16) の最後の Servicing Baseline (セキュリティ修正などの対象) となり、それ以前のバージョンは順次サポート終了となり、16.11 が2029年4月までサポートされます。

また .NET Core 2.1 のサポートが2021年8月21日で終了となり、それ以降は更新が受けられなくなるため .NET 3.1 または .NET 5 への移行が推奨されます。

ヘッドライン

Announcing .NET 6 Preview 7

https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-7/

.NET 6 Preview 7 での各種変更点。

  • テンプレートが top-level statements を使ったものに。
  • Nullability Information API の導入。
    • プロパティの nullability を調べるリフレクション API の NullabilityInfoContext などが追加
  • ライブラリ: Zip ファイルが Unix パーミッションを尊重するように
  • Early .NET 7 Feature Preview: Generic Math
    • Static abstract interface members を活用した計算可能な型の拡張
    • INumber や IParseable といったインターフェース
    • プレビューのため、オプトインが必要で breaking change が発生する可能性もある。プロダクションで使用することは非推奨
    • Preview Features in .NET 6 – Generic Math
  • ライブラリ: NativeMemory APIs
  • ライブラリ: System.Text.Json シリアライズ時の通知
    • IJsonOnDeserialized, IJsonOnDeserializing インターフェースを実装することでオブジェクトのシリアライズのタイミング(前後)でのコールバックを受け取れるように
  • ライブラリ: System.Text.Json プロパティ順序
    • JsonPropertyOrder で順序を指定できるように
  • ライブラリ: “write raw” JSON with System.Text.Json.Utf8JsonWriter
    • Utf8JsonWriter で JSON に直接書き込める API の追加
  • ライブラリ: JsonSerializer の同期 stream オーバーロード
  • ライブラリ: System.Text.Json.Nodes.JsonNode support for dynamic is removed
    • JsonNode に dynamic サポートが preview 4 で追加されていたが削除
    • .NET 5 からの変更はなし
  • ライブラリ: System.Diagnostics Propagators
    • OpenTelemetry の Propagation コンセプトをサポートする仕組み
  • ライブラリ: 暗号処理の呼び出しの簡略化
    • 既にメモリーにデータがある状態で使える Encrypt-, Decrypt- メソッドの追加
    • 以前は Stream を経由する必要があった
  • ライブラリ: Full Case Mapping Support in Globalization Invariant Mode
  • ランタイム: W^X (write xor execute) support for all platforms and architectures
    • メモリーページを read-execute にする機能をすべてのプラットフォームに展開
    • Apple Silicon 環境下では writable + executable を同時に指定することを許可していないため Apple Silicon な macOS ではすでに有効
    • スタートアップ速度のリグレッションがあるためオプトイン (Apple SIlicon を除く)。 環境変数 DOTNET_EnableWriteXorExecute1 にすることで有効化
    • .NET 7 でパフォーマンスは解決してデフォルト有効にしたい意向

VS 2022 Preview 3 & .NET 6 Preview 7 で導入された C# 10 の機能。

global usings が導入されたことで、.NET 6 以降の場合には暗黙的 global usings がビルド時にインポートされますが、LangVersion を 10 未満に落としている場合 (Unity とのコードシェアや TargetFrameworks の都合など) にビルドエラーとなるため、<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports> で暗黙的インポートを抑制する必要があります。

ASP.NET Core updates in .NET 6 Preview 7

https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-preview-7/

Minimal API の追加。Blazor におけるクエリーストリングをパラメータで受け取る仕組み、C# と JavaScript 間でのストリームの取り扱い、head の書き換えサポートなどが追加。Kestrel に HTTP/3 サポートがプレビューで追加。

Visual Studio 2022 Preview 3 now available!

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-preview-3-now-available/

Visual Studio 2022 Preview 3 のリリース。

.NET 6 Preview 7 対応。Nullable Reference Types のデフォルト有効化。

エディタの改善。ブレークポイントドラッグアンドドロップや一時ブレークポイント、自動セーブ (プレビュー)、マルチキャレットコピーアンドペーストなど。

Git のマルチリポジトリ対応や ASP.NET Core との統合などを含む JavaScript/TypeScript の開発体験の改善。

Visual Studio 2019 v16.11 is Available Now!

https://devblogs.microsoft.com/visualstudio/visual-studio-16-11/

Visual Studio 2019 v16.11 のリリース。Git ツーリングの改善と .NET アプリケーションの Hot Reload 対応、細かい修正など。

16.11 が 2019 (v16) の最後の Servicing Baseline (セキュリティ修正などの対象) となることの発表。それ以前のバージョンは順次サポート終了となり、16.11 が2029年4月までサポートされる。

ReSharper 2021.2: Updates to C# Code Analysis, Nullable Reference Types, and Source Generators and Introducing HttpClient URI Support!

https://blog.jetbrains.com/dotnet/2021/08/03/resharper-2021-2-release/

ReSharper 2021.2 のリリース。Code Analysis や Nullable Reference Type の改善。ASP.NET Core のルーティングを元にした HttpClient の URL 入力補完機能の追加。

Source Generator にも対応し、ジェネレートされたコードにブレークポイントをはったり、inlay hints を表示する、プロパティ名をリネームしたときにバッキングフィールドの名前もリネームするといったことが可能に。

また、このバージョンから .NET Framework 4.7.2 が必須要件に。

Rider 2021.2: Support for ASP.NET Core Endpoints, Blazor WebAssembly Debugging, and More

https://blog.jetbrains.com/dotnet/2021/08/03/rider-2021-2-released/

Rider 2021.2 のリリース。

ASP.NET Core のルーティングを元にした Endpoint ツールウィンドウ対応と HttpClient の URL 入力補完機能の追加。ReSharper 同様 Code Analysis や Nullable Reference Type の改善、Source Generator 対応。

Blazor WebAssembly のデバッグ対応が追加。

Unity 関連の強化。未保存のシーンがある状態でコミットしようとすると警告を出すといった対応など。

他の IDE から設定をインポートする機能が搭載。

Apple Silicon 対応のプレビュー版もリリースされ、サポートページからダウンロード可能に。

The v2021.2 Releases for dotCover, dotMemory, dotTrace, and dotPeek Are Here!

https://blog.jetbrains.com/dotnet/2021/08/03/dotcover-dotmemory-dottrace-dotpeek-2021-2/

dotCover, dotMemory, dotTrace, dotPeek の 2021.2 がリリース。

dotCover はカバレッジツリー内の C# 8/9 のサポート強化など。dotMemory はメモリーアロケーションの解析強化など。dotTrace はネイティブプロファイリング対応や macOS/Linux 上でのプロファイリングが拡大。dotPeek は single-file executable をデコンパイル可能に。

Support for Visual Studio 2022 Preview – ReSharper Support | JetBrains

https://resharper-support.jetbrains.com/hc/en-us/articles/4404930135570

ReSharper の Visual Studio 2022 Preview のサポートのプレビュー版がリリース。サポートページから入手可能。

.NET August 2021 Updates – 5.0.9, 3.1.18, 2.1.29

https://devblogs.microsoft.com/dotnet/net-august-2021/

.NET 5, .NET Core 3.1, .NET Core 2.1 に対する3つのセキュリティ修正が行われてリリース。

  • CVE-2021-34485: .NET Core Information Disclosure Vulnerability
  • CVE-2021-26423: .NET Core Denial of Service Vulnerability
  • CVE-2021-34532: ASP.NET Core Information Disclosure Vulnerability

.NET Core 2.1 のサポートが間もなく (8月21日) 終了。

.NET Framework August 2021 Security and Quality Rollup

https://devblogs.microsoft.com/dotnet/net-framework-august-2021-security-and-quality-rollup/

.NET Framework のセキュリティと累積更新プログラムの8月リリース分。

セキュリティ修正はなく、CLR の GC の挙動のコントロールと Windows Forms の修正。

Codespaces · GitHub

https://github.com/features/codespaces

GitHub Codespaces (Visual Studio Code とコンテナーによるクラウド開発環境) が正式リリース。

また、リポジトリ上で . キーを押すと簡易版 Codespaces (Visual Studio Code) でファイルを開くことが可能に。コンテナーなどクラウドリソースを持たない代わりに軽量、無料。

Unity 2021.2.0 Beta 7

https://unity3d.com/jp/unity/beta/2021.2.0b7

Unity 2021.2b6 から .NET Standard 2.1 をターゲットにできるように。Unity における .NET Framework 4.8 は .NET Standard 2.1 を含むスーパーセットを意味するように(ただし現状バグがある)。

アーティクル

GitHub’s Engineering Team has moved to Codespaces | The GitHub Blog

https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/

GitHub.com の開発環境を Codespaces に移行した話。(C# や .NET ではない)

The .NET Ecosystem in 2021: Over half of .NET devs use C# 8, 46% do not use diagnostic tools, and other facts

https://blog.jetbrains.com/dotnet/2021/08/12/the-net-ecosystem-in-2021-over-half-of-net-devs-use-c-8-46-do-not-use-diagnostic-tools-and-other-facts/

JetBrains による言語バージョンやツールなどの調査から .NET エコシステムの中で使われているものにフォーカスした話。

31,743 developers from 183 countries or regions

C# の利用者の 30% が 9.0 、50% が 8.0 といった割合。半分ぐらいの人がパフォーマンス/診断ツールを使っていない、など。

.NET 6: Theading Improvements

https://www.infoq.com/news/2021/08/net6-Threading/

.NET 6 でのスレッド周りでの強化について。

.NET 6 で Environment.CurrentManagedThreadId に最適化が入ったため Thread.CurrentThread.ManagedThreadId が非推奨に。Paralell.ForEach の async 版 Paralell.ForEachAsync が導入され、ExecutionContext を引き継がずスレッドを起動する Thread.UnsafeStart が導入された、など。