はじめに
今回はSystem.Text.Json
のv8.0.1
をUnityで動作させる手順について紹介したいと思います。
またSystem.Text.Json
をUnityの型に対応させる記事を前に書いたので、気になる方はそちらもチェックしてみてください。
engineering.dena.com
その前に
System.Text.Json
のバージョンはUnityのMicrosoft.CodeAnalysis.CSharp
のバージョンに依存しています。System.Text.Json v8.0.1
のソース生成を行うSystem.Text.Json.SourceGeneration
はroslyn3.11
,roslyn4.0
,roslyn4.4
に対応しています。
一応Unity2023.3の公式ドキュメントではSystem.Text.Json v6.0.0-preview
のみ対応しているとのことです。
Unity only supports version 6.0.0-preview of the ‘System.Text.Json’ namespace. If you want to use this namespace in your application, ensure you use version 6.0.0-preview. For more information about System.Text.Json, refer to Microsoft’s System.Text.Json Namespace documentation
// DeepL翻訳
Unityは'System.Text.Json'名前空間のバージョン6.0.0-previewのみをサポートしています。アプリケーションでこの名前空間を使用する場合は、バージョン6.0.0-previewを使用してください。System.Text.Jsonの詳細については、MicrosoftのSystem.Text.Json Namespaceドキュメントを参照してください。
しかし少なくともUnity2022.3.10f1以降ではMicrosoft.CodeAnalysis.CSharp v3.11
以降を利用しており、System.Text.Json v8.0.1
が動作することを確認できました。(最低限のバージョンは調べていませんのでご注意ください)
手順
nuget.orgからdllを取得する
nuget.org
からSystem.Text.Json
と依存するパッケージを取得します。
- System.Text.Json v8.0.1
- System.Runtime.CompilerServices.Unsafe v6.0.0
- System.Text.Encodings.Web v8.0.0
- Microsoft.Bcl.AsyncInterfaces v8.0.0
右側にあるDownload package
からダウンロードができます。またダウンロードするバージョンがあっているか注意してください。
.nupkg
ファイルがダウンロードできますが、拡張子を.zip
に書き換えることで展開することができます。4つのファイルに対してそれぞれ操作を行なってください。
.dllをUnityにインポートする
UnityのPluginsフォルダ以下に以下の.dll
をインポートしてください。
system.text.json.8.0.1/lib/netstandard2.0/System.Text.Json.dll
system.text.json.8.0.1/analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll
system.runtime.compilerservices.unsafe.6.0.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll
system.text.encodings.web.8.0.0/lib/netstandard2.0/System.Text.Encodings.Web.dll
microsoft.bcl.asyncinterfaces.8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll
AssetLabelをつける
System.Text.Json.SourceGeneratoin.dll
はSourceGenerator
を利用しているため、RoslynAnalyzer
というAsset Label
をつける必要があります。これはUnityが.csproj
ではなく.asmdef
を利用している都合上の設定です。
System.Text.Json.SourceGenerator.asmdef
のAsset Label
にRoslynAnalyzer
と記述してあげます。