トピックス
AWS announces a streamlined deployment experience for .NET applications in .NET CLI and Visual Studio
.NET アプリケーションを AWS に簡単にデプロイするための CLI と Visual Studio 向けの拡張が一般公開となった。
適切なコンピュートの選択や Dockerfile の自動生成、パッケージングとデプロイといったことを支援するツール。例えば dotnet aws deploy ...
で ECS や App Runner にデプロイできる。
IDE、.NET ツール、および All Products Pack のサブスクリプションの価格改定 | JetBrains News
JetBrains の IDE や .NET ツール、All Products Pack のサブスクリプションの価格が改訂されるというアナウンス。
ReSharper や Rider を含む、多くの JetBrains 製品のサブスクリプションの価格が改訂され値上がりとなる。この新しい価格は2022年10月1日から適用される。
個人向けのプランでは最大2年または3年の、法人向けプランでは最大2年の現行の価格での先払いが可能となっている。
製品 (個人向け) | 現行価格 (税込; 1年目) | 改定後価格 (税込; 1年目) |
---|---|---|
All Products Pack | 31,570 円 | 38,148 円 |
dotUltimate (Rider + ReSharper) | 18,920 円 | 22,308 円 |
ReSharper | 16,390 円 | 18,348 円 |
Rider | 17,600 円 | 19,668 円 |
CoreWCF 1.1.0 and project templates - .NET Blog
https://devblogs.microsoft.com/dotnet/corewcf-1-1-0-and-project-templates/
CoreWCF 1.1 がリリースされた。
HTTP 上のトランスポートセキュリティーでの偽装や WebHttpBinding で生成する Swagger ファイルを変更するための新しい API といった小さな改善が含まれている。
記事ではこのリリースで追加されたプロジェクトテンプレートについても紹介している。
Release Release v2.47.0 · grpc/grpc-dotnet
https://github.com/grpc/grpc-dotnet/releases/tag/v2.47.0
grpc-dotnet 2.47.0 がリリースされた。
HttpClientBuilder で AddCallCredentials に CallCredentials を受け取るオーバーロードの追加のほかいくつかの不具合が修正されている。
.NET Data Frameworks Biweekly Updates (2022) · Issue #27185 · dotnet/efcore
https://github.com/dotnet/efcore/issues/27185
Entity Framework を含むデータフレームワークの隔週更新情報の7月7日分。
Entity Framework 7 で値オブジェクトのサポートとマップされていない型に対する生 SQL クエリーのサポートがカットされたとのこと。
EF Core Biweekly Update
— Arthur Vickers (@ajcvickers) July 7, 2022
Unfortunately, we have had to make some painful cuts for EF7. Most notably, value objects and raw SQL for unmapped types are cut. 😢
In better news, interceptors for query expressions and concurrency exceptions are now merged! 🦄https://t.co/4RGMEMJtB4
アーティクル、スライドなど
(C#) C# 10でも ref field したい - ネコのために鐘は鳴る
https://ikorin2.hatenablog.jp/entry/2022/07/02/203741
C# 11 で導入される ref field と同様なことを Span<T>
で実現するというテクニックについての記事。
Azure SDK for .NET の認証を DefaultAzureCredential にそろえる - tech.guitarrapc.cóm
https://tech.guitarrapc.com/entry/2022/07/06/012351
Azure SDK for .NET に古くからの AzureCredentials
と現在推奨される DefaultAzureCredential
があり、それを DefaultAzureCredential
で共通に扱う方法についての記事。
Manage .NET Microservices APIs with Apache APISIX API Gateway
https://dev.to/apisix/manage-net-microservices-apis-with-apache-apisix-api-gateway-2cbk
Apache APISIX API Gateway を使用して .NET の Web API を扱う例についての記事。
Back to Basics: Custom HTTP Response Header Manipulation in ASP.NET Core - Rick Strahl's Web Log
ASP.NET Core でカスタム HTTP レスポンスヘッダーを取り扱う方法についてのおさらい記事。MVC のアクションの中、ミドルウェア、Web.config といったものを説明している。
.NET Annotated Monthly | July 2022 | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2022/07/05/net-annotated-monthly-july-2022/
JetBrains による .NET 関連情報のまとめ、7月号。
GraphQL For .NET
https://dev.to/drminnaar/graphql-for-net-38lc
GraphQL の API サーバーを構築する方法をステップバイステップで解説している記事。
サーバーの構築からミューテーション、Entity Framework Core の利用やクエリープロジェクションといったことに触れている。
複数のASP.NET Core Webアプリーションでセッション情報を共有する方法 - Qiita
https://qiita.com/Shuji_Kitamura/items/e8fa20c30b8bb52d5d84
複数の ASP.NET Core アプリケーション間でセッション情報を共有する方法についての記事。
記事では Redis を使用してアプリケーション間でセッションを共有する構成を解説している。
MonoでDigit Separator (桁区切り文字)にハメられた話 - Qiita
https://qiita.com/ktz_alias/items/42359f5fe76f2cf21ac9
Mono の mcs (C# コンパイラー) では Digit Separators (桁区切り文字; 数字区切り文字) の処理に不具合があり、不正な値となる問題があるという記事。
Roslyn では問題がないため、Mono かつ mcs を使用している場合に影響を受けるので外部のサービスなどで注意が必要なケースがある(Mono には Roslyn の csc も含まれている)。
MAUI で独自のコントロールを作る方法のメモ
https://zenn.dev/okazuki/articles/maui-custom-control
MAUI でネイティブのコントロールを使用するカスタムコントロールを実装する方法についての記事。
C# 11 Generic Attributes More Than Syntax Sugar
https://gsferreira.com/archive/2022/csharp-11-generic-attributes-more-than-syntax-sugar/
C# 11 (.NET 7) で導入されるジェネリック属性についての記事。
簡単なコード例でどのような形で利用できるのかといったことを紹介している。
.NET MAUI UI July: Outlook Clone
https://goforgoldman.com/2022/06/30/outlook-clone.html
.NET MAUI で Outlook の UI を再現してみるという記事。
Distribute Visual Studio project templates
https://pieterjandeclippel.medium.com/distribute-visual-studio-project-templates-1788324cc842
Visual Studio (.NET SDK) のプロジェクトテンプレートを配布する方法についての記事。
Creating a TreeView control in .NET MAUI
https://dev.to/icebeam7/creating-a-treeview-control-in-net-maui-49mp
.NET MAUI でツリービューコントロールを実装するという記事。
Containerizing a Running Application with AWS App2Container - Bill, the Vest Guy
https://billthevestguy.com/2022/07/03/containerizing-a-running-application-with-aws-app2container/
.NET Framework で実装されたアプリケーションを AWS App2Container でコンテナー化する方法についての記事。
The Best .NET Decompiler Comparison Guide ✅ (Free and Paid)
https://blog.dotnetsafer.com/best-dotnet-decompilers/
.NET のデコンパイラー(有償および無償)を比較紹介している記事。
記事では ildasm, ILSpy, DnSpy, 9Rays Spices.Net, Redgate .NET Reflector, JustDecompile, dotPeek のそれぞれの特徴を紹介している。
Returning XML from minimal APIs in .NET 6
https://andrewlock.net/returning-xml-from-minimal-apis-in-dotnet-6/
ASP.NET Core の Minimal APIs で XML を返すリザルトを実装する方法についての記事。
記事では RecyclableMemoryStream を使用したバッファーのプーリングについても触れている。
Checking Orleans with the PVS-Studio analyzer - DEV Community
https://dev.to/unicorn_developer/checking-orleans-with-the-pvs-studio-analyzer-3id2
Orleans を PVS-Studio Analyzer (有償の静的コードアナライザー) で解析して見つかった問題を紹介する記事。
初期化の順番、重複したコードといった様々な問題が発見されている。
Story about graceful termination with modern .NET
https://blog.kbegiedza.eu/dotnet-and-story-about-graceful-termination
.NET アプリケーションでコンテナーのシャットダウン要求のようなグレースフルな終了を実装する方法についての記事。
記事では Microsoft.Extensions.Hosting の BackgroundService を使用した方法を紹介している。
Visual Studio 2022 でインラインで型名やパラメーター名を表示する設定 - tech.guitarrapc.cóm
https://tech.guitarrapc.com/entry/2022/07/08/015920
Visual Studio 2022 で導入されたインラインヒント (ReSharper や Rider の Inlay hints と同様の機能) を有効にする方法を紹介する記事。
Tag Helper for Display Templates | You've Been Haacked
http://haacked.com/archive/2022/07/08/display-template-tag-helper/
Html.DisplayFor(...)
の代わりに <display for="...">
で呼び出せるタグヘルパーを実装するという記事。
The FASTEST .NET Ever? The Latest New Features of .NET 7 Confirm the Rumors
https://blog.dotnetsafer.com/dotnet-7-performance-features-benchmark-comparison/
.NET 7 で達成されるといわれているパフォーマンス改善について紹介している記事。
リフレクション、On Stack Replacement、起動時間や AOT など。
ライブラリ、リポジトリ、ツールなど
DamianEdwards/BlazorIdentity: An exploration of recreating the ASP.NET Core Identity UI functionality in Blazor components.
https://github.com/DamianEdwards/BlazorIdentity
Blazor で ASP.NET Core Identity の UI を再実装しているライブラリー。
Skater .NET Obfuscator - Index
有償の .NET 向け難読化ツール。
サイト、ドキュメントなど
ツイート
I should clarify no differences in "normal" single threaded code.
— Tanner Gooding (@tannergooding) July 3, 2022
You can pretty easily create observable differences in safe single threaded code if you know what you're doing.
It's just expected most methods and ideas won't do something like that so it wouldn't be an issue
in
修飾子をつけても値渡しと違いはないといったツイートから、実際には大きい構造体以外では複雑なコード生成によるパフォーマンスの悪化や、防衛的コピーやマルチスレッドでの問題の発生といったことがあるよというツッコミ。
This means that you need to consider `constexpr` in the face of "ref assembly".
— Tanner Gooding (@tannergooding) July 7, 2022
You need to consider `constexpr` in the face of runtime differences or behaviors (say Roslyn runs on Mono and the user has set an environment variable opting into "fast math", changing the result)
C# では Math.Floor(100/7)
をコンパイル時定数化できないんですか?という問いに対して、JIT はできるかもしれないが C# (Roslyn) はその関数が決定論的に pure な関数であることを伝えることができないので無理という話。
Deep Dive
[Arm64 Server Throughput] Address many-core scaling challenges · Issue #70528 · dotnet/runtime
https://github.com/dotnet/runtime/issues/70528#issuecomment-1171487696
ARM64 のメニーコアサーバーでのスケーリングに関する Issue。
.NET 7 では .NET 6 に比べて最大5倍のパフォーマンスを出せるようになったというコメント。