all green

プログラム、アプリ作成、Web等備忘録が中心です

mpc実行時に発生したエラー System.InvalidOperationException: failed to get metadata of MessagePack.MessagePackObjectAttribute の対応

いつの間にかmpcの実行時にエラーが発生するようになっていた時に対応した内容のメモ。

コマンド

mpc -i [省略]/Assembly-CSharp.csproj  -o [省略]/MessagePack/Generated


エラー

Project Compilation Start:Assembly-CSharp
failed to get metadata of System.Threading.Tasks.Task`1
failed to get metadata of System.Threading.Tasks.Task
Fail in console app running on MessagepackCompiler.RunAsync
System.InvalidOperationException: failed to get metadata of MessagePack.MessagePackObjectAttribute
   at MessagePackCompiler.CodeAnalysis.ReferenceSymbols..ctor(Compilation compilation, Action`1 logger) in D:\a\1\s\src\MessagePack.GeneratorCore\CodeAnalysis\TypeCollector.cs:line 58
   at MessagePackCompiler.CodeAnalysis.TypeCollector..ctor(Compilation compilation, Boolean disallowInternal, Boolean isForceUseMap, String[] ignoreTypeNames, Action`1 logger) in D:\a\1\s\src\MessagePack.GeneratorCore\CodeAnalysis\TypeCollector.cs:line 280
   at MessagePackCompiler.CodeGenerator.GenerateFileAsync(Compilation compilation, String output, String resolverName, String namespace, Boolean useMapMode, String multipleIfDirectiveOutputSymbols, String[] externalIgnoreTypeNames) in D:\a\1\s\src\MessagePack.GeneratorCore\CodeGenerator.cs:line 61
   at MessagePack.Generator.MessagepackCompiler.RunAsync(String input, String output, String conditionalSymbol, String resolverName, String namespace, Boolean useMapMode, String multipleIfDirectiveOutputSymbols, String[] externalIgnoreTypeNames) in D:\a\1\s\src\MessagePack.Generator\MessagepackCompiler.cs:line 65
   at ConsoleAppFramework.ConsoleAppEngine.RunCore(ConsoleAppContext ctx, Type type, MethodInfo methodInfo, String[] args, Int32 argsOffset)
  


ぐぐってみたところ.net sdk 5が起因する問題のようでした。

github.com

自分には.NET 5 が必要無いため以下手順にて対応しました。

1. .NET 5 SDKをアンインストール
2. .NET Core 3.1を再インストール(必要ないかも)