はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【C#】.protoに記載されているコメントをランタイムで取得する方法(--descriptor_set_outを用いてFileDescriptorSetを活用する)

C#

はじめに 今回は.protoに記載されているコメントをランタイムで取得する方法を紹介したいと思います。 // example.proto syntax = "proto3"; import "google/protobuf/descriptor.proto"; option csharp_namespace = "Protobuf.Sample"; // メッセージ定義に…

【C#】どうやらMicrosoft.Extensons.LoggingはMessageTemplateのIndexによる順序の制御に対応していないらしい

C#

はじめに Microsoft.Extensions.LoggingはMessageTempalteを用いています。 messagetemplates.org // MessageTempalteを用いたログ出力 string p1 = "param1"; string p2 = "param2"; // Parameter values: param1, param2 logger.LogInformation("Parameter…

【C#】coverlet.collectorで生成されたファイルなどの特定ファイルをコードカバレッジ収集対象外にする

C#

はじめに 今回はcoverlet.collectorで生成ファイルなどの特定のファイルをコードカバレッジ収集対象外にする方法を紹介したいと思います。 はじめに やり方 コマンド引数を用いる runsettingsを用いる 参考 やり方 以下の2種類の方法があります。 コマンド引…

【C#】recordの一部プロパティだけで等価かどうかを判定するように変更(Equals・GetHashCode置き換え)する方法

C#

はじめに recordはとても便利な糖衣構文ですが、例えば一部のプロパティだけで等価かどうか判定したいような場合がありました。例えばDDDのEntityとかですね。実際にrecordがどういう実装がされているのかは以下の記事を見ると分かると思います。 www.hanach…

【Unity】com.unity.search.extensionsに依存しているとEditMode TestがFailする話

はじめに 先日Unityが公開している(といってもOfficialではない)パッケージであるcom.unity.search.extensionsに依存しているプロジェクトのEditMode TestがFailしてしまうことに気が付きました。 EditMode Testが失敗している様子ValidateCustomIndexation(…

【Rider】「実行 / デバッグ構成(Run/Debug Configurations)」を用いて引数を与えながらデバッグ実行をする

はじめに Riderのデバッガーはとても有用ですが、恥ずかしながら引数を渡しながらデバッグ実行する方法を最近まで知りませんでした。 デバッガーを利用している様子そのやり方を今回は紹介したいと思います。 はじめに やり方 実行構成の編集 他の人と共有で…

【C#】NuGetでGoogle.Protobuf.Toolsをインストールした際のprotoc実行バイナリのパスについて

C#

はじめに protobufを利用する際に、protocを取得する手段の一つとしてGoogle.Protobuf.Toolsを利用するのは割とある方法だと思います。www.nuget.orgしかし毎回その実行バイナリのパスを忘れてしまうのでメモがてらに書き残しておきたいと思います。 はじめ…

【C#】C#13から登場した「OverloadResolutionPriority」を用いてオーバーロードの優先順位を指定する

C#

はじめに C#13で新しくSystem.Runtime.CompilerServices.OverloadResolutionPriorityAttributeが追加されました。 namespace System.Runtime.CompilerServices; [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets…

【Blazor+GCP+terraform】Blazor ServerをCloud Runで動作させてGCSマウントしたファイル一覧を表示する

はじめに 今回はBlazor ServerをCloud Run上で動作させてマウントさせたGCS上のファイルを一覧で表示する簡易サイトの作り方を紹介したいと思います。 実際に動作している様子 はじめに 概要 作り方 .NET 8 Blazor web applicationを作成する GCSのマウント…

【PowerShell】PesterというPowerShell用のテストフレームワークを用いてテストを実装する方法

はじめに 今回はPesterというPowerShell用のテストフレームワークを紹介したいと思います。 $ Invoke-Pester -Output Detailed ./Sandbox.Test.ps1 Pester v5.6.1 Starting discovery in 1 files. Discovery found 3 tests in 2ms. Running tests. Running t…

【C#】マークダウンとC#で数行コードを書くだけで静的サイトが作れる「Statiq Web」を紹介

はじめに .NETの最新情報を毎週投稿してくれるWeekRef.NET: 週刊 .NETですが、どうやらStatiq Web + GitHub Pagesを用いて構築されていることを知りました。 weekref.net気になり調べたところ、C#コードを数行書くだけで、記事を.mdで書くといい感じにサイト…

【PowerShell】いつも書くおまじないメモ(shebang, version指定, errorの扱い)

はじめに 私はPowerShellを書くときに、以下のコードをおまじない的にいつも記述しています。 #!/usr/bin/env pwsh #Requires -Version 7.4 # Paramに関する記述 $PSNativeCommandUseErrorActionPreference = $true $ErrorActionPreference = "Stop"このコー…

【C#】ExcludeFromCodeCoverageAttributeを用いてコードカバレッジ収集の対象外にする

C#

はじめに 今回はdotnet testでコードカバレッジを収集する際にExcludeFromCodeCoverageAttributeを用いて対象外にする設定をする方法を紹介したいと思います。 learn.microsoft.com はじめに コードカバレッジ収集について コードカバレッジの収集対象外に設…

【GCP + terraform】terraformを使用してCloud RunでGCSをMountして利用する(C#)

はじめに 今回Cloud RunにてCloud Storageのバケットをterraformを使用してマウントする方法を紹介したいと思います。 はじめに 概要 GCSの構築 IAM・サービスアカウントの設定 Cloud Runの定義 GCS上のファイルを表示するC#コード 実際に動作している様子 …

【PowerShell】PowerShellならVSCodeでBreakpointもImmediate Windowも利用できる

はじめに PowerShellを推している理由の一つとして、デバッグ機能が充実している点が挙げられます。特に以下の2つは神機能です。 Breakpoint Immediate Window 今回はこの2つの機能をVS Codeで扱う方法を紹介したいと思います。 はじめに その前に Breakpoin…

【C#】CoconaでMicrosoft.Extensions.DependencyInjectionを用いてDIを行う方法

C#

はじめに 今回はCoconaに標準で入っているMicrosoft.Extensions.DependencyInjectionを用いてDIを行う手法を紹介したいと思います。github.comhttps://github.com/mayuki/Cocona/blob/master/samples/InAction.DependencyInjection/Program.cs はじめに やり…

【Unity】生成したコードをPrefabに自動でアタッチする方法

はじめに 今回は生成したコードをPrefabに自動アタッチする方法を紹介したいと思います。 はじめに 概要 コンパイル後にアタッチする 実験 概要 PrefabへのアタッチにはPrefabUtilityを利用すると簡単に実現できます。 docs.unity3d.com private static void…

【Actions】「dorny/paths-filter」を用いてジョブ単位でのpathsを実現する

はじめに GitHub Actionsで特定のフォルダ以下のファイルが変更されたときのみワークフローを実行するにはpathsを使うと思います。 # srcフォルダ以下のファイルが変更されたときのみ実行する on: pull_request: paths: 'src/**.cs' ただjob単位で条件をつけ…

【C#, Actions】coverlet.collector + octcovを用いてプルリクを出した際にコードカバレッジの増減をCIで表示する

はじめに 今回はC#でプロジェクトを構築している前提でPRを出した際にコードカバレッジの増減を表示してくれるCIの作り方を紹介したいと思います。 コードカバレッジの増減表示具体的にはcoverlet.collectorとoctcovというOSSを利用して実現していきます。gi…

【Unity】YetAnotherHttpHandlerを用いてHTTP/2を扱えるHttpClientを作成する

はじめに 今回はYetAnotherHttpHandlerを用いてUnityでHTTP/2を扱う方法を紹介したいと思います。 はじめに 背景 概要 環境 インストール方法 使い方 さいごに 背景 まず.NETが提供するHttpClientですが、.NET Core3.0以降であればHTTP/2に対応しています。 …

【C#】record (class)・record struct・readonly record structがどういう実装になるのかSharpLabでデコンパイルして覗いてみる

C#

はじめに record (class)やrecord struct、readonly record structはとても便利な機能なのですが、たまにEqualの処理どうなってたっけ・プロパティのアクセシビリティなんだっけと私はよくなります。 // record : record classと同じ意味 public record Reco…

【Actions】ステータスチェックジョブを作成してBranch Protectionで指定したjobが通らないとマージできないようにする

はじめに 今回は指定したジョブが成功したかを監視するステータスチェックジョブを作成してBranch Protectionに指定する方法を紹介したいと思います。複数のジョブがあったときに、一つでも失敗してしまうとマージができなくなるようにしていきます。 はじめ…

【Unity】UI ToolkitのTwoPaneSplitViewをコードから動的に生成せずに利用する方法

はじめに UI ToolkitのTwoPaneSplitViewというVisualElementがあるのですが、それがめちゃくちゃ便利です。2つの要素をリサイズできるようにしつつ分割して表示してくれるものになります。 docs.unity3d.com TwoPaneSplitViewよくコードからTwoPaneSplitView…

【Unity】.asmrefはCore CLRがくると動作しなくなるよという話

はじめに UnityはMonoからCore CLRへの移行を進めていますが、Core CLRがくると.asmrefが使えなくなるみたいです。そのあたりを軽く調べてみたので、そのまとめを書き残しておきたいと思います。また現時点ではまだ開発中なので、今後変わるかも知れないので…

【GCP, terraform】Cloud Runをterraformで構築して.NETで構築した最小構成のウェブサーバーをデプロイする

はじめに 今回はterraformを利用してCloudRunを構築しminimal API(ASP.NET Core + .NET 8)で構築したWebサーバーをデプロイする方法を紹介したいと思います。具体的には以下の操作をしていきます。 terraformによるCloud Run構築 ASP.NET Coreによるプロジェ…

【C#】System.Text.Jsonで[JsonRequired]を用いて、デシリアライズの際にプロパティが存在しないとJsonExceptionを投げさせる

C#

はじめに 今回はSystem.Text.Jsonの[JsonRequired]について書きたいと思います。www.nuget.orglearn.microsoft.com はじめに 前提 [JsonRequired]について 前提 System.Text.Jsonでデシリアライズする際に、[JsonRequired]が付与されていないプロパティに対…

【Unity】RiderのBreakpointにてEvaluate and logが出力に表示されないときの対処法(Breakpoint Trace message outputを設定する必要あり)

はじめに RiderにはBreakpointにてEvaluate and log(評価して記録)というブレークポイントに到達したときに値の評価しログ出力できる機能があります。 Evaluate and log JetBrains Rider では、任意の行、メソッド、例外ブレークポイントをトレースポイント…

【Rider】gitignoreで.ideaフォルダ以下を全部ignoreするのはどうやら違うらしい

はじめに 今まで.gitignoreで.ideaフォルダ以下のものはGitにあげないようにしていました。 # gitignore /.idea/ただ最近知ったのですが、どうやら一部はGitにあげたほうが良いらしいです。今回はそのことについて書きたいと思います。 はじめに .ideaとは g…

【C#】.NET Toolとしてローカルにあるnupkgからインストール&利用する方法

C#

はじめに 今回はローカルにあるnupkgから.NET Toolとしてインストールをして利用する方法を紹介したいと思います。 はじめに 概要 nupkgの作成方法 nuget.configの作成方法 dotnet tool installを行う 参考 概要 nuget.orgからインストールする際にはあまり…

【Unity】UI ToolkitでWindow画面いっぱいに表示ができないときの対処法(Unityが自動生成するTemplateContainerの影響)

はじめに 今回はUI Toolkitで画面いっぱいに何かを表示したいときの方法を紹介したいと思います。 画面いっぱいに表示している様子 はじめに UI Builderと実際の見た目が異なる 原因 対処法 参考 UI Builderと実際の見た目が異なる BackgroudColorを赤色に設…