C#
NuGetにはロックファイル(packages.lock.json)を用いてリストアする機能があります。npmではpackage-lock.jsonが当たり前に使われていますが、C#のプロジェクトでロックファイルを使っている例はあまり見かけません。 最近SBOMについて調べる中で、なぜNuGet…
2025年11月に.NET 10がリリースされましたが、2026年1月6日にAWS Lambdaが.NET 10をサポートしました。 これに伴いファイルベースプログラムのC# Lambda関数もサポートされ、.csファイルだけ用意すればLambda関数をデプロイできるようになりました。 AWS Lam…
Riderのブレークポイントログについての記事を読んだのですが、Visual Studioにも同様の機能があります。Visual Studioでも同じことができないか、と悩んでいる人に向けての紹介です。 Unityで開発していると「ちょっとここの値を確認したいな」と思って、ロ…
以前にも軽く紹介する記事を書いているのですが、.NET 10から、C#のファイルベースプログラム実行機能が追加されました。C#にファイルベースプログラムが来ても.csファイルを用意して実行することを考えがちでしたが、そういえばパイプ入力でコードを渡して…
NativeAOTは、.NETアプリケーションをネイティブコードにコンパイルする技術です。 NativeAOTはJITではなくAOTでコンパイルすることで、いくつかのメリットがあります。スタートアップが速くなり、メモリ使用量も少なくなります。また、動作環境にランタイム…
以前の記事でC#からCPUモデルを取得する方法を紹介しましたが、ARM64環境に対する手当が不十分でした。今回はARM64環境も含めてC#でCPUモデルを取得する方法を紹介します。 アーキテクチャとOSごとのCPUモデル取得方法 C#での実装例 動作確認 まとめ 参考 ア…
SkiaSharp.QrCodeはC#でQRコードを生成するためのライブラリです。コードは大きく「QRコードデータの生成処理」と「SkiaSharpによるレンダリング統合」の2要素で成り立っています。 今回、QRコードデータ生成部分をフルリファクタリングしてC#で最速のQRコー…
Terraformはリソースの特定のプロパティの変更を無視するのにignore_changes: [array]を用いますが、これと同様のことがPulumiのIgnoreChangesオプションで可能です。 PulumiのIgnoreChangesはドキュメントで解説されているのですが、Pulumiで入れ子のキーを…
C#は様々な用途に利用できる言語ですが、.NETになってからはサーバーサイドとしてはLinuxで動かすのが自然な選択肢になっています。なぜLinuxで動かすのか理由をいくつか挙げてみます。 もしかすると C#はWindows向けに開発された言語、.NET Framework (.NET…
現在プレビュー提供中の.NET 10から、dotnet runコマンドでファイルベースのプログラムを実行できるようになりました。これにより、dotnet run app.csのように、C#ファイルを直接実行できるようになります。 本日発表されたファイルベースプログラムの実行方…
以前Visual Studio 2022で使っている拡張機能を紹介しましたが、さすがにいろいろ変わりました。 2025年版です。 一覧 .NET Upgrade Assistant Copy Nice Git Diff Margin Solution Error Visualizer 2022 Time Stamp Margin 2022 VSColorOutput64 GitHub Co…
Amazon EFSといえば、ECS/EKS/EC2問わず複数マシンで単一ボリュームを参照できて非常に便利です。 EFS自身はAWS Backupでバックアップできるのですが、EFSの中身を直接見ることは出来ず不便なことも多いでしょう。 今回は、EFSの中身をS3にバックアップする…
AWS IAM Identity CenterをTerraformで構成するときはaws-ia/terraform-aws-iam-identity-centerが便利です。 同様にPulumiでも構成してみましょうという回です。 どのような構成にするのか グループと権限セットはアカウントごとに分ける 管理アカウントで…
IAM Userを利用してC#からAWSのリソースにアクセスする場合、AccessKeyやAccessSecretKeyを直接利用して認証します。AWS IAM Identity Center(旧AWS SSO)でも同様にAccessKeyやAccessSecretKeyを取得して利用できますが、SSOログインした一時認証情報を取得…
Ubuntuへの.NET SDKのインストール方法はいろいろあります。ただ数年WSLにAnsibleでインストールしてきた結果、やり方が落ち着いたのでメモ。 Linuxへの.NET SDKインストール Ansibleで.NET SDKをインストール 実行してみる まとめ 参考 Linuxへの.NET SDKイ…
C#のプロジェクト構成といえば、プロジェクトファイル(.csrpoj)とそれを束ねるソリューションファイル(.sln)が定番です。 現在プレビュー提供されているSLNX形式と呼ばれる新しいソリューションファイルが、.NET SDK 9.0.200から利用しやすくなりました。 い…
Visual StudioでC#コードを書いていて、未使用のプライベートメソッドがグレーアウトするのを無効化したい。という時のメモです。 どのような状況 グレーアウトしないように対処する 参考 どのような状況 たとえばコンソールアプリケーションを作って、以下…
.NETは組み込みコンテナサポートを持っておりdotnet publishでコンテナイメージを作成できます。このようなDockerfileなしのコンテナ作成はJibやBuildpacksを思い起こしますが、dotnet publishという標準コマンドで提供しているのが大きな違いです。 Dockerf…
C#をLinuxやコンテナで動かせるようになって久しくC#をコンテナで実行している人も多いでしょう。 C#はlinuxのamd64(x86_64)とarm64の両方に対応しているので、ライブラリや実装コードに気を払えば「同一コードベースでマルチプラットフォーム動作」が可能で…
Pulumiでマルチプラットフォーム対応のDocker Imageを作成する時はdocker-buildパッケージを使うのがオススメです。ただ注意点として、1年余りプレビュー状態が続いており、これまでのdockerパッケージから見ると挙動の違いに注意が必要です。 今回はPulumi…
C# 91から利用できるTarget-typed newは使い方によっては非常に便利です。 ただ、ライブラリのAPI設定次第で使いたいときに使えないというシーンもあるのでメモです。 暗黙的型変換を期待するAPIではTarget-typed Newは使えない Pulumi C#で頻出のAPIパター…
前回の記事でDatadogにCloudWatch Metric Streamを使ってメトリクスを送信するCloudFormation StackをPulumi/Terraformから呼び出す方法を書きました。今回は、CloudFormation StackでやっていることをPulumi C#にポートします。 なぜポートするのか Pulumi …
DatadogはAWSのCloudWatchメトリクスの取り込みをPull方式とPush方式の両方サポートしています。いわゆるDatadog AWS IntegrationはPull方式でCloudWatchメトリクスを10分程度のレイテンシーで取り込みます。一方で、AWS CloudWatch Metric StreamはPush方式…
隣接するIPv4のCIDRを集約表記にする処理を書いたのでメモです。 IPv4 CIDRをまとめるとは C#で隣接するIPv4 CIDRを集約表記にする アドレスがまとまる様子 Pythonならipaddress.collapse_addressesを使う まとめ IPv4 CIDRをまとめるとは CIDRはIPアドレス…
GitHub Actionsのsetup-dotnetアクションは、global.jsonを解釈して.NET SDKをインストールできます。ただ、global.jsonサポートは限定的でバージョン直指定かrollForwardlatestFeatureのみ対応しています。 気まぐれでC#でもサクッと同じものを用意したので…
.NETはglobal.jsonファイルを使って、利用する.NET SDKのバージョンの制限を表現できます。 あまりglobal.jsonを有効に機能させられるシーンはないと考えていたのですが、ワークアラウンドを見てなるほど思ったので.NET SDKのバージョンを固定することが有効…
dotnet/BenchmarkDotNetは.NETコードのベンチマークライブラリで、デファクトスタンダードとして使われています。クラスやアセンブリ単位に実行したり、ベンチマークの試行回数調整やパラメーターセットアップも容易で非常に使いやすく、私自身もよく使って…
TargetFrameworksを用いると複数のフレームワークに対応したライブラリを作成できます。今回は、このTargetFrameworksを指定しつつDockerビルドする方法を紹介します。 なお、コンテナで複数ランタイムを持つ意義はほぼないので、この記事はただの興味本位で…
.editorconfigは様々な言語でコードの設定を統一するための設定ファイルです。C#も.editorconfigを使うとコードフォーマットやアナライザーの設定できます。今回は私がこれまでC#で.editorconfigを使ってきておすすめ設定と避けたほうがいいと考えている設定…
前回の記事でラッパーコマンドの場合、ConsoleAppFramework v5へ移行する悩みを書きました。その後ConsoleAppFramework 5.4.0がリリースされ、ラッパーコマンドへの引数を渡しがサポートされました。これによってConsoleAppFramework v5でもラッパーコマンド…