トピックス
AppHarbor is Shutting Down - AppHarbor
https://blog.appharbor.com/2022/11/09/shutting-down-appharbor
.NET アプリケーションのホスティングサービス AppHabor が12月5日にサービス終了のアナウンス。(11月9日付)
期日以降は Web サイトやアプリケーション、データベースなどを含め、すべてのデータにアクセスできなくなる。
C# for Babies
https://lp.jetbrains.com/csharp-for-babies/
JetBrains による赤ちゃんに C# を理解できるようにするための電子書籍。
A から Z までの単語についてイラストと簡単な説明をつけている絵本。
Release 13.0.2 · JamesNK/Newtonsoft.Json
https://github.com/JamesNK/Newtonsoft.Json/releases/tag/13.0.2
Newtonsoft.Json (JSON.NET) 13.0.2 がリリースされた。
このリリースでは DateOnly や TimeOnly のサポートや UnixDateTimeConverter.AllowPreEpoch の追加などいくつかの新機能と不具合の修正が行われている。
Announcing ComputeSharp 2.0 — run C# on the GPU with ease through DirectX 12 and D2D1!
ComputeSharp 2.0 がリリースされた。
2.0 では大きく書き直され、ランタイムコード生成の代わりとなるソースジェネレーターや多くの新しい API、D2D1 ピクセルシェーダーのサポート、UWP と WinUI 3.1 との統合のための XAML コントロールの導入といった変更が行われた。
記事では ComputeSharp の紹介、動作の仕組み、XAML サポートと D2D1 ピクセルシェーダーといった部分を紹介している。
.NET MAUI is now available in Visual Studio for Mac 17.4 - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/net-maui-is-now-available-in-visual-studio-for-mac-17-4/
Visual Studio for Mac 17.4 での .NET MAUI の対応がリリースされた。
Windows の Visual Studio と同様に .NET MAUI の開発に必要な機能の多くが利用可能となった。 また、XCode 14.1 への対応は近日中にリリースされ、今後は C# のホットリロードや XAML のライブプレビューといった機能の実装も予定しているとのこと。
Rider 2022.3 EAP 9
https://www.jetbrains.com/rider/nextversion/
Rider 2022.3 EAP 9 (早期アクセスプレビュー) がリリースされた。
このリリースでは .NET 7 SDK のサポート(プロジェクトテンプレートの更新や Central Package Management、C# 11 など)、Unreal Engine 5.1 のサポート、バックエンドの .NET 7 への移行によるパフォーマンス改善、新しいツールバー UI のデフォルト化、C# の機械学習によるコード補完といったものが含まれている。
Rider 2022.3 EAP 9 just landed with support for .NET 7 SDK and Unreal Engine 5.1, plus a new Main Toolbar. Learn more and download it here: https://t.co/QBOAmxsSLu pic.twitter.com/4mHW6FUUmd
— JetBrains Rider (@JetBrainsRider) November 25, 2022
ReSharper 2022.3 EAP 9
https://www.jetbrains.com/resharper/nextversion/
ReSharper 2022.3 EAP 9 (早期アクセスプレビュー) がリリースされた。
このリリースでは EAP 8 での ARM64 サポートが拡充され、dotCover, dotTrace, dotMemory そして ReSharper のコマンドラインツールが ARM64 に対応した。その他正式リリースに向けて不具合の修正が行われている。
ReSharper 2022.3 EAP 9 has just been published! Follow the link to learn more and download: https://t.co/pzUrLvdYJy pic.twitter.com/M76wRl0W68
— JetBrains ReSharper (@resharper) November 25, 2022
アーティクル、スライドなど
.NET Serialization Roundup 2022
https://aloiskraus.wordpress.com/2022/11/23/net-serialization-roundup-2022/
.NET の様々なシリアライザー(バイナリーや JSON)のシリアライズ、デシリアライズのパフォーマンス比較を行っている記事。
記事ではシリアライズ/デシリアライズのパフォーマンスのほか、起動時のパフォーマンスに関しても計測、比較している。
Improve your productivity with Web Live Preview and Telerik - Visual Studio Blog
Visual Studio 2022 での ASP.NET Web フォームを実行時プレビューを行う Web Live Preview についての紹介記事。
記事では Web Live Preview の有効化と利用方法、Telerik のコンポーネントのようなサードパーティーコンポーネントとの統合の様子などを紹介している。
C# List Pattern Examples | You've Been Haacked
https://haacked.com/archive/2022/11/22/csharp-list-pattern/
C# 11 のリストパターンのコード例を紹介している記事。
.NET 7 Removes Its Insecure XmlSecureResolver
https://www.infoq.com/news/2022/11/XmlSecureResolver/
.NET 7 では XmlSecureResolver が廃止されたことについての記事。
XmlSecureResolver は外部リソースを参照することで発生する XXE を回避するため使用が推奨されていたが、コードアクセスセキュリティー (CAS) を元に実装されていたが .NET Core 以降は CAS を持たず制限がかからない状態となっていたため .NET 7 で廃止となった。型は残っているものの参照するとビルド時に警告が出力され、実行時には例外が発生する。
外部リソースを制限するには XmlSecureResolver の代わりに XmlResolver.ThrowingResolver を使用することが推奨のアクションとなっている。
ASP.NET Core Razor PagesでIAsyncPageFilterを実装する - Qiita
https://qiita.com/gushwell/items/bcf39aaf708b9a483cf5
ASP.NET Core Razor Pages におけるページのフィルター処理を実装する方法についての記事。
Azure ADでログインしてBlazor WASM→ASP.NET Core WebAPI→MS Graph APIを呼びたい
https://zenn.dev/okazuki/articles/auth-blazorwasm-aspnetcore-obo
Azure AD にログインする Blazor WebAssembly のアプリケーションから ASP.NET Core Web API で Microsoft Graph API を呼び出す方法についての記事。
クライアントから直接 Graph API を呼び出すのではなく、代わりにサーバーアプリケーションが呼び出すフロー(On-Behalf-Of フロー)の使用と構築方法。
The dangers and gotchas of using scoped services in OptionsBuilder
OptionsBuilder を使用した構成の構築にスコープ付きサービスを使用する場合の危険性と落とし穴についての記事。
.NET 7 Adds Aggressive Garbage Collection for Kubernetes
https://www.infoq.com/news/2022/11/GCCollectionMode-Aggressive/
.NET 7 で導入された GCCollectionMode.Aggressive
についての記事。
GCCollectionMode.Aggressive
は GC.Collect
で GC を行う際に可能な限りメモリーを開放するというモード。これはコンテナー上のワーカーのようなアイドル時間が長く、待機中はメモリーも殆ど使用しないというケースで、完全にシャットダウンはしたくないが待機中のリソースの使用量は押さえたいというようなケースで役立つ。
Build and publish Visual Studio extensions with GitHub Actions
https://blog.elmah.io/build-and-publish-visual-studio-extensions-with-github-actions/
GitHub Actions で Visual Studio 拡張をビルドしてパブリッシュ(VSIX パッケージの生成)を行う方法についての記事。
AndroidでASP.NET Coreを動かす - Qiita
https://qiita.com/karuakun/items/c8439d0aadb2e798cf08
Android で Termux を使い、Ubuntu を動作させ .NET SDK をインストールして ASP.NET Core アプリケーションを実行するという記事。
.NET でも .NET でなくても静的セキュリティコード検査 (Semgrep 編)
https://zenn.dev/masakura/articles/b84642b5bd680f
静的セキュリティコード検査を行うオープンソースの Semgrep を使用して C# のコードを検査する使い方についての記事。
MagicOnionで大きな複合データオブジェクトを送受信する方法 - Qiita
https://qiita.com/mxProject/items/838ef3e5e2856c66a29c
MagicOnion でストリーミングを使用することで大きなデータを送受信する方法についての記事。
Confusing .NET Decompilers: The CallVirt OpCode
https://washi.dev/blog/posts/confusing-decompilers-with-callvirt/
仮想関数テーブルのインデックスが同じであれば異なる型でも IL 上は CallVirt で呼び出すことができてしまい、デコンパイラーはそれをうまく取り扱えないといったことについての記事。
Lambda Cold Starts - .NET 7 Native AOT vs .NET 6 Managed Runtime | no dogma blog
AWS Lambda でのコールドスタートの時間を .NET 7 の Native AOT と .NET 6 のランタイムで比較した記事。
Parsing the “nettrace” stream of (not only) events
https://chnasarre.medium.com/parsing-the-nettrace-stream-of-not-only-events-8b95c7f82ec4
.NET の診断プロトコルの "nettrace" ストリームの形式とパースする方法についての記事
dotNETConf/2022/MainEvent/Technical at main · dotnet-presentations/dotNETConf · GitHub
https://github.com/dotnet-presentations/dotNETConf/tree/main/2022/MainEvent/Technical
.NET Conf 2022 で使用されたスライド集。
デスクトップのブラウザやプレーヤーのサウンドデータを横取りしてスペアナ風の表示をしてみた - Qiita
https://qiita.com/osamus/items/5093cefe20e8f817bbef
BASS というオーディオを扱うライブラリーを使用してスペアナ風のビジュアライザーを実装した際のポイントなどをまとめている記事。
[C#]MemoryPackを使ってみたい7 - ある程度動くサンプル1
https://spacekey.dev/memorypack-7
MemoryPack を使用して ASP.NET Core の API サーバーと Nuxt による Web フロントエンドで通信処理を行うアプリケーションを実装してみたという記事。
Frozen collections in .NET 8
https://steven-giesel.com/blogPost/34e0fd95-0b3f-40f2-ba2a-36d1d4eb5601
.NET 8 で導入予定の Frozen Collections についての記事。
Frozen Collections と既存の IReadOnlyList<T>
や Immutable Collections との違い、パフォーマンスなどについて紹介している。
Removing out-of-support components from your Visual Studio installations - Visual Studio Blog
Visual Studio 2022 17.4 のインストーラーからサポート対象外となったコンポーネントを削除する機能についての解説記事。
新しいインストーラーではサポート対象外となったコンポーネントを一括で削除できるようになり、記事ではその操作方法などを紹介している。
この削除機能はインストーラーが新しくなっていれば Visual Studio 2022 のすべてのバージョンに対して実行可能となり、Visual Studio 2019 や 2017 の環境であっても 2022 インストーラーをインストールすることで対応が可能とのこと。
ライブラリ、リポジトリ、ツールなど
MichalStrehovsky/PublishAotCompressed
https://github.com/MichalStrehovsky/PublishAotCompressed
Native AOT でパブリッシュする際に UPX で実行ファイルを圧縮するという MSBuild の拡張パッケージ。
Build fully self-contained .NET 7 command line apps starting at ~800 kB with PublishAot and PublishAotCompressed! The new version of PublishAotCompressed bumps the UPX compressor to version 4.0.1 that shipped a couple days ago. Grab it from NuGet: https://t.co/q4UBeXqq45
— Michal Strehovský (@MStrehovsky) November 25, 2022
dhq-boiler/boilersE2E: Support your E2E testing
https://github.com/dhq-boiler/boilersE2E
Windows デスクトップアプリケーションの E2E テストを行う際のヘルパーとなるライブラリー。Windows Application Driver の起動と終了、タイムアウト付き要素検索など。
kalk
様々な計算や変換、Hardware Intrinsics の実行などが行える開発者向けコマンドライン計算機。
ForNeVeR/AvaloniaRider: JetBrains Rider plugin for Avalonia development
https://github.com/ForNeVeR/AvaloniaRider/
Rider で Avalonia を開発サポートするためのプラグイン。プレビューやテンプレートなどが提供される。
Took me a while (as everything do), but finally I've released the first stable release of AvaloniaRider, #Avalonia previewer plugin for @JetBrainsRider (only EAP builds for now).
— Dr. Friedrich von Never (@fvnever) November 26, 2022
Fully cross-platform, since it is based on #Avalonia awesomeness.https://t.co/zQzNuchGoF
lowleveldesign/windbg-ext-template: A template for creating managed WinDbg extensions
https://github.com/lowleveldesign/windbg-ext-template
WinDbg で .NET をホストしてマネージドコードで拡張関数を実装するためのテンプレート。
I'm happy to share a sample managed WinDbg extension based on the .NET hosting API and DbgX NuGet package. Thanks to the signatures in DbgX, we may now access all the DbgEng interfaces in dotnet! 🤯 #dotnet #windbg https://t.co/ndxyEgPzDv
— Sebastian Solnica (@lowleveldesign) November 25, 2022
サイト、ドキュメントなど
Home | endoflife.date
様々なフレームワークやプロダクトの End-of-Life の日付をまとめているサイト。
ツイート
ICYMI - Firmware images of .NET @nanoframework @EspressifSystem ESP32-C3 series have just been released! 🥳🚀
— .NET Foundation (@dotnetfdn) November 23, 2022
.NET now runs on @risc_v processors too!
How cool is this?!?! 💜🤩 #dotnet pic.twitter.com/9UmMpKPkMJ
ESP32-C3 向けの .NET nanoFramework ファームウェアイメージがリリースされ、RISC-V で .NET が動くという話。
Alexandre Mutel: "One of the super cool feature of NativeAOT with .…" - Mastodon
https://mastodon.social/@xoofx/109423020409800983
One of the super cool feature of NativeAOT with .NET 7 is "Direct PInvoke calls" or the ability to link against a static library https://github.com/dotnet/runtime/blob/main/src/coreclr/nativeaot/docs/interop.md and call functions directly. There is no built-in support to distribute such things with NuGet (e.g like runtime folder) but it's easy to ship a package that would provide dynamic libraries but could also provide support for statically linked libraries and inject it automatically via a MSBuild target. I love this feature! 😎
.NET 7 の NativeAOT では直接 P/Invoke 呼び出しと静的ライブラリリンクがサポートされているという話。