C#
はじめに 今回はC#でプロジェクトを構築している前提でPRを出した際にコードカバレッジの増減を表示してくれるCIの作り方を紹介したいと思います。 コードカバレッジの増減表示具体的にはcoverlet.collectorとoctcovというOSSを利用して実現していきます。gi…
はじめに 今回はYetAnotherHttpHandlerを用いてUnityでHTTP/2を扱う方法を紹介したいと思います。 はじめに 背景 概要 環境 インストール方法 使い方 さいごに 背景 まず.NETが提供するHttpClientですが、.NET Core3.0以降であればHTTP/2に対応しています。 …
はじめに record (class)やrecord struct、readonly record structはとても便利な機能なのですが、たまにEqualの処理どうなってたっけ・プロパティのアクセシビリティなんだっけと私はよくなります。 // record : record classと同じ意味 public record Reco…
はじめに 今回はterraformを利用してCloudRunを構築しminimal API(ASP.NET Core + .NET 8)で構築したWebサーバーをデプロイする方法を紹介したいと思います。具体的には以下の操作をしていきます。 terraformによるCloud Run構築 ASP.NET Coreによるプロジェ…
はじめに 今回はSystem.Text.Jsonの[JsonRequired]について書きたいと思います。www.nuget.orglearn.microsoft.com はじめに 前提 [JsonRequired]について 前提 System.Text.Jsonでデシリアライズする際に、[JsonRequired]が付与されていないプロパティに対…
はじめに 今まで.gitignoreで.ideaフォルダ以下のものはGitにあげないようにしていました。 # gitignore /.idea/ただ最近知ったのですが、どうやら一部はGitにあげたほうが良いらしいです。今回はそのことについて書きたいと思います。 はじめに .ideaとは g…
はじめに 今回はローカルにあるnupkgから.NET Toolとしてインストールをして利用する方法を紹介したいと思います。 はじめに 概要 nupkgの作成方法 nuget.configの作成方法 dotnet tool installを行う 参考 概要 nuget.orgからインストールする際にはあまり…
はじめに 先日、SourceGeneratorを利用したパフォーマンスの良いEnumユーティリティを提供するライブラリを公開しました。 github.com.NET標準API や 世界最速のenumライブラリ FastEnum よりもパフォーマンスが良いライブラリ RapidEnum リリースしました!…
はじめに 今回はBOM無しのUTF-8でファイルに書き込む方法について紹介したいと思います。 はじめに やり方 やり方 encoderShouldEmitUTF8Identifierをfalseに指定したUTF8Encodingを利用します。 learn.microsoft.com // BOM付きUTF-8で書き出す File.WriteA…
はじめに 今回はSemantic Versioningを簡単に扱えるようになるMS製ライブラリのNuGet.Versioningを紹介したいと思います。 www.nuget.org はじめに 概要 使い方 概要 Semantic Versioningをプログラムで扱うためにはNuGet.Versioningを推奨されています。 Nu…
はじめに 今回はRider2024.2から登場したExtracting common codeについて紹介したいと思います。blog.jetbrains.com はじめに 概要 おまけ やり方 概要 Extracting common codeを用いることで、重複したコードを抜き出してよしなにコードを綺麗にすることが…
はじめに 今回はSourceGeneratorにてAttributeArgumentSyntax.NameColonがnullな場合と値が格納されている場合の違いについて書きたいと思います。learn.microsoft.com はじめに その前に 取得するには 違い 補足 その前に まず前提としてSyntaxTreeは構文解…
はじめに 今回はMessagePack-CSharpでCustom Formatterを作成する方法を紹介したいと思います。github.com はじめに 概要 環境 やり方 Custom Formatterの作成 Resolverの作成 よりパフォーマンスを上げるために MessagePackSerializerOptionsへの設定 実験 …
はじめに 今回は個人的にデバッグをする上で覚えておきたい機能一位であるImmediate Windowを紹介したいと思います。pleiades.io Immediate Windowを利用している様子 はじめに 概要 使い方 1. デバッグ実行する 2. プログラムが一時停止する 3. Immediate W…
はじめに Xを見ていたらこのようなものを見つけました。TIL: you can add C# syntax highlighting to a string literal by adding /* lang=c#-test */ above it: https://t.co/Tr7A8UzUY1 pic.twitter.com/WLcDDz8mhz— Daniel Cazzulino (@kzu) 2024年7月24…
はじめに SourceGeneratorにてRegisterPostInitializationOutputを用いてAttributeを定義するのは、公式も紹介しているようなよくある手法です。 RegisterPostInitializationOutput:... It is particularly useful for adding attribute definitions to the …
はじめに 今回はVYamlを用いてYAML(Unityで利用される特殊な形式を含む)をシリアライズ・デシリアライズする方法を紹介したいと思います。github.com はじめに UnityとYAML VYamlとは インストール方法 Unityの場合 基本的な使い方 命名規則 あらかじめSchem…
はじめに 今回はISymbol.ToDisplay(SymbolDisplayFormat.FullyQualified)を用いてSymbolの完全修飾名を取得する方法を紹介したいと思います。 learn.microsoft.com はじめに やり方 実験 動作しないケース やり方 ISymbol.ToDisplay(SymbolDisplayFormat.Ful…
はじめに 今回はchecked・uncheckedキーワードについて取り上げたいと思います。 unchecked { int x = int.MaxValue; // -2147483648 int y = x + 1; Console.WriteLine(y); long a = -100; // 18446744073709551516 ulong b = (ulong)a; Console.WriteLine(…
はじめに 今回はSourceGeneratorでブレークポイントを用いたデバッグをRiderでする方法を紹介したいと思います。Rider公式で紹介されていて、今まで頑張ってテストコード書いてデバッグしてましたがもっと手軽にできることを知って衝撃を受けました。もっと…
はじめに 今回はRiderを日本語化しようという記事になります。 日本語化した状態 はじめに やり方 参考 やり方 Riderを開き、メニューバーよりFile -> Settingsを選択。 File -> SettingsタブバーからPluginsを選択し、Japanese Language Packを検索しインス…
はじめに 今回はUnityでIncremental Source GeneratorのAdditionalTextsProviderを利用する方法を紹介したいと思います。 はじめに その前に AdditionalFilesを利用してファイルを読み込む Unityでの場合 ちょっとした裏技(?) その前に どこかのバージョン…
はじめに 今回はRiderのショートカットである"どこでも検索(Search Everywhere)"について紹介したいと思います。 pleiades.io Shift2回を押してどこでも検索を利用している様子個人的にRiderで覚えて欲しい機能一位でして、これがないともうコード書けません…
はじめに 今回はRuntimeでcsファイルをRoslynで解析をしてリフレクションで実行する方法を紹介したいと思います。github.com はじめに 概要 インストール 今回の流れ 構文木を生成する Syntax Treeの走査 C#のバージョン指定 コンパイル MetadataReferenceで…
はじめに 今回はSourceGeneratorで実際にファイル出力させる方法について紹介したいと思います。 はじめに やり方 参考 やり方 SourceGeneratorで生成したコードが含まれる側の.csprojに対して(SourceGeneratorのコードが含まれる.csprojでないので注意)、Em…
はじめに 今回はMSBuildでdotnet buildが終了した後にdllを特定の場所にコピーする方法を紹介したいと思います。特にUnityの場合では、Roslyn AnalyzerやSourceGeneratorを利用する場合は手作業でdllをコピーするのはとても面倒です。そんなときはMS Buildで…
はじめに 今回はPrivateコンストラクタしかないclassを無理やりリフレクションで作成する方法を紹介したいと思います。 public class Hoge { // privateコンストラクタしかないと正攻法だと外から生成できない private Hoge() { } } はじめに やり方 引数が…
はじめに 今回はprotobufのカスタムオプションをC#で取り出す方法を紹介したいと思います。 protobuf.dev // カスタムオプションを定義 extend google.protobuf.MessageOptions { string my_option = 50000; } message MyMessage { // "Hello, world!"をC#上…
はじめに 今回はCoconaというOSSを紹介したいと思います。github.com はじめに 概要 インストール 使い方 基本 Optionsについて Argumentsについて Sub-commands パラメーターの共通化 Validation Microsoft.Extensions.*の利用 Logging DI さいごに 概要 よ…
はじめに 今回はPlayerSettingsのScriptingDefineSymbolsをスクリプトから取得・設定する方法について紹介をしたいと思います。 ProjectSettings/Player/OtherSettings/Script Compilationより設定可一応補足ではありますが、スクリプトからでなければProjec…