Start Debugging

タグ: csharp

316 件 · ページ1/32

SDK スタイルのプロジェクトで厳密な名前付きアセンブリの完全な公開キーを InternalsVisibleTo に追加する方法
署名済みアセンブリは、フレンドをトークンではなく 320 文字の完全な公開キーで指定する必要があり、そうしないとビルドが CS1726 または CS0281 で失敗します。sn -p と sn -tp、またはクロスプラットフォームの .NET スクリプトでキーを取得し、.csproj の InternalsVisibleTo 項目の Key メタデータに設定します。PublicKey プロパティによるフォールバック、Moq の DynamicProxyGenAssembly2 のキー、改行の落とし穴も扱います。
C# アプリで Windows セッションのロック、ロック解除、ログオン、ログオフのイベントを検出する方法
デスクトップアプリやコンソールアプリでは SystemEvents.SessionSwitch を使い、Windows サービスでは OnSessionChange をオーバーライドし、あるいは WM_WTSSESSION_CHANGE を自分でフックします。3 つすべての .NET 10 コード、隠れた '.NET System Events' スレッド、サービスではログオンが見えるのにデスクトップアプリでは見えない理由、順序が入れ替わる通知、WTSQuerySessionInformation で現在のロック状態を問い合わせる方法を解説します。
2026-10-04 nunittestingdotnet
NUnit 5: Assert.ThrowsAsync は Task を返すようになり、await し忘れたテストは黙って成功します
NUnit 5.0.0 で Assert.ThrowsAsync、CatchAsync、DoesNotThrowAsync が本当の意味で非同期になりました。await を忘れるとアサーションは実行されません。何が壊れるのか、NUnit.Analyzers の NUnit2059 ルールが何を検出するのか、アップグレード前に確認すべき NUnit 5 のその他の変更点をまとめます。
2026-10-03 csharpdotnetasync
非 async メソッドでアロケーションなしに ValueTask を同期的に待機する方法
まず IsCompleted を確認し、GetAwaiter().GetResult() で結果を読み取れば、コストは 0 バイトです。ValueTask がまだ保留中の場合に限ってブロックし、その際は呼び出しごとに 72 から 208 バイトを割り当てる AsTask() ではなく、キャッシュしたイベントと UnsafeOnCompleted を使います。.NET 10 と .NET 11 RC1 で計測しました。
.NET 10 の Volatile.Read と Volatile.ReadBarrier の違い
Volatile.Read は 1 つの位置に対するアクワイア読み取りです。.NET 10 で追加された Volatile.ReadBarrier は、それ以前のすべての読み取りにアクワイアセマンティクスを与えるフェンスです。フラグや公開された参照には Volatile.Read を、seqlock のように通常の読み取りやアトミックでない読み取りをまとめて次のメモリアクセスの前に完了させたい場合には ReadBarrier を使います。
修正: .NET MAUI 10 で UseMaterial3 を有効にすると Android のステータスバーアイコンが見えなくなる
MAUI 10.0.100 はステータスバーアイコンの色を colorPrimary から決定しますが、これは Material 3 の surface とは明るさが逆になるため、白地に白、黒地に黒になります。Microsoft.Maui.Controls を 10.0.101 以降に更新するか、MainActivity で AppearanceLightStatusBars を設定し直してください。
修正: iPadOS 26 で Keyboard.Numeric を指定した .NET MAUI の Entry が小さなテンキーを表示し、次にフルキーボードを表示する
iPadOS 26 では、MAUI が Keyboard.Numeric を UIKeyboardType.DecimalPad にマッピングし、これがフローティングの小さなテンキーとして開くようになりました。iPad では NumbersAndPunctuation に切り替えるマッパーを追加し、入力は自分で検証します。
Quartz.NET 4.2、不正なcron式をビルドエラーに変換
Quartz.NET 4.2.0には、パース不能なcronリテラルをコンパイル時にQZ0001としてエラーにするRoslynアナライザーと、[QuartzJob]および[CronTrigger]属性をAddDeclaredJobs()の登録に変換するソースジェネレーターが同梱されています。本記事では、何がチェックされるのか、生成されるコードがどのようなものか、そしてどうすれば無効化できるかを解説します。
次へ