🤔
MessagePack For C#のAOT Code Generationをコンテナで実行する
毎回忘れるAOTのやり方
MessagePack for C#をUnityなどの環境で使おうと思うと事前にコンパイルが必要です。必要なのですが、1回やったらしばらく使わないので、毎回やろうとするたびに忘れるんですよね……。
特に依存している.NET Core Runtimeのバージョンが3なのでそこで毎回「どうするんだっけ……?」ってなります。
なのでコンテナ化する
こんな感じのDockerfile
を作って
Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:3.1.422-alpine3.16
RUN dotnet tool install --global MessagePack.Generator
ENV PATH="$PATH:/root/.dotnet/tools"
こんな感じでビルドして
docker build -t mpgenerator .
こんな感じで対象のディレクトリで使う
docker run --rm -v `pwd`:/mp mpgenerator mpc -i /mp -o /mp/Generated
べんり!
メモ書き
.NETのimageには複数あるがRuntimeではdotnet tool install
で失敗するので、SDKの方でやる必要がある。イメージのサイズが大きい……。
mpgenerator latest 0eb988bb68c6 2 hours ago 511MB
とはいえ手元のローカル環境でしか動かさないので別にダイエットする必要もない。
そもそもAOTが必要なコードはコンパイルが通らない状態ということであり、そんなのを自動ビルドできるような環境にプッシュしないと思うので[1]。なのでUSER
も作っていない。
まとめ
めっっっっっちゃべんりになった……!
毎回30分くらいひっかかってた気がするので、ここにメモしておけばもう大丈夫でしょう。
インストールとかしなくていい! めっっっっっちゃべんりになった……!
おしまい。
参考
「どうするんだっけ……?」ってググってたら出てきた昔の自分の記事。
-
.metaがどうなるかわからないのでUnityのコード生成を自動ビルドはこわい。 ↩︎
Discussion