この記事を必要とするひと
- HoloLens/HoloLens2でMRTKv2.2を使いたい
- ScriptingBackend .NETでデバッグをしたい
この記事を必要としないひと
- IL2CPPのビルド時間に耐えられる
- ScriptingBackend .NETでデバッグなんかしない
- MRTKv2.1で十分である
開発環境
- Unity 2018.4.15f
- Visual Studio 2019
- MRTKv2.2
経緯
MRTKv2.2でUnity上での開発を完了させ、実機(HoloLens2)にデプロイすべくBuildしたら詰んだ。
何を言われているのか分かるが判らなくて豆腐さえ置けない。
— シュレディンガーのナツさん (@natsu_san) January 21, 2020
MRTKver2.2でMSBuildとか入ったっぽくてそれの関連????#HoloLens #Unity pic.twitter.com/KelZ0wbxIN
解決方法(簡潔に)
- MRTKv2.2で追加されたMSBuildを使わない(ただし、別の制約あり)
- MRTKv2.1でBuildしてからMRTKv2.2に差し替える(未確認)
こんにちは。自分も全く同じ状況に遭いました。
— Cindy / キンキン (@kinkincindy) January 22, 2020
試しにmrtk2.1.0を入れてビルドして、削除し、次にmrtk2.2.0を入れてましたらビルドできました。あまり賢い方法とは言えませんが、参考にしていただければ幸いです。
NGな手順
新規プロジェクト作成
SwichPlatform(UWP)
Microsoft.MixedReality.Toolkit.Unity.Foundation.2.2.0.unitypackageインポート
MixedRealityToolkit > ConfigureUnityProject でMSBuildにチェックを入れる(デフォルト)
ScriptingBackendを.NETにする
Editor上でお豆腐を置く(ここまでは問題なし)
Build
突然の死。
Assets\MixedRealityToolkit.Providers\WindowsMixedReality\WindowsMixedRealityReprojectionUpdater.cs(61,35): error CS0012: The type 'Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
「.netStandard2のassembly参照が無いよ!」
んなわけあるかーーwwww
MSBuild > Regenelate C# SDK Projectしてみる
Dependencies.msb4u.csproj : error NU1101: �p�b�P�[�W MSBuildForUnity ��������܂���B�\�[�X Microsoft Visual Studio Offline Packages, nuget.org �ɂ́A���� ID �̃p�b�P�[�W�����݂��܂���B
UnityEngine.Debug:LogError(Object)
ちょっと何言ってるか分からないですね。。。
救いの手
そこは沼。。。
— みう (16) (@miunet0123) January 21, 2020
・MRTK は .unitypackage で入れる
・MS Build for Unity は有効化しない
のふたつで、たぶん。。。 https://t.co/6VIVF47E0D
解決策:MSBuild使わない
新規プロジェクト作成
SwichPlatform(UWP)
Microsoft.MixedReality.Toolkit.Unity.Foundation.2.2.0.unitypackageインポート
MixedRealityToolkit > ConfigureUnityProject で MSBuildのチェックを外す
ScriptingBackendを.NETにする
Editor上でお豆腐を置く(なんとなく青)
Build!
VisualStudioで開く→デバッグなしで開始
......。
Visual Studio 2017 Update3でC#7.1を使ってみた
アッ、ハイ!
気を取り直してVisualStudio 2019 で開く→デバッグなしで開始
バーチャル豆腐きた!
考察
MSBuildは依存系DLLを集めてくれるらしい。
MSBuildを有効にすると下記のメッセージが表示される。
DLL探索パスにDotNetAdaptorのフォルダを追加したよ~
おそらく、ここにDLLが入る想定なのだが、何らかの理由で上手く入らないパターンがある。
制約
Microsoft Mixed Reality Toolkit Release Notes
曰く
MSBuildはNugetで自動的に依存を解決するよ
いくつかの機能はMSBuild必須だよ(例えばHoloLens2のhand aned eye remoting)
ぬぬ。
Holographic Remotingでハンドトラッキングとアイトラッキングをサポートしたよ!
ぐぬぬ。
ちなみに、NGパターンでもIL2CPPだと普通にビルドできます。
が、すごーーーーーーーーく待たされる。辛い。
MRTK supports both IL2CPP and .NET scripting backends on Unity 2018
MSさんなんとかしてよね!
あともっと建設的な解決策がありましたらどなたかご教授くださいm(_ _)m