原因
最新の MessagePack for C# (執筆時のバージョンは 2.2.60 ) の MessagePack CodeGen ウィンドウでは、ジェネレートが動かなくなっています。中でdotnet tool
コマンドを使っていますが、.NET Core ツールについては前回の記事を参照してください。
ツールの ToolCommandName
に設定する名前は、プレフィックス dotnet-
で実行するコマンドが変わってきます。
最新の MessagePack for C# はプレフィックス dotnet-
が取れています。
<ToolCommandName>mpc</ToolCommandName>
以前はプレフィックスが付いていました。
<ToolCommandName>dotnet-mpc</ToolCommandName>
最新のものをグローバルツールとして実行するには、dotnet mpc
ではなく、mpc
で実行する必要があります。
一方で、エディタ拡張のコマンドは以下のままであるため、ジェネレートが動かなくなっています。
var log = await ProcessHelper.InvokeProcessStartAsync("dotnet", "mpc " + commnadLineArguments);
一時対処
エディタ拡張自体がグローバルツールを使うようにできています。MessagePack for C# 自体はローカルツールに舵取りするようなので、ここでは一時対処だけ記載しておきます。
Assets/Scripts/MessagePack/Unity/MessagePackWindow.cs
の150行目付近にある以下のコードの部分を。
var log = await ProcessHelper.InvokeProcessStartAsync("dotnet", "mpc " + commnadLineArguments);
以下の要領で書き換えます。
UnityEngine.Debug.Log("try local tool"); var log = await ProcessHelper.InvokeProcessStartAsync("dotnet", "mpc " + commnadLineArguments); if (string.IsNullOrEmpty(log)) { UnityEngine.Debug.Log("try global tool"); log = await ProcessHelper.InvokeProcessStartAsync("mpc", commnadLineArguments); }
参考
原因を教えて頂いた記事に感謝。