Unity
HoloLens
VisualStudio2017

【HoloLens】Unity2017.1 と Visual Studio 2017 15.3 でビルドに失敗するときの対処法

More than 1 year has passed since last update.

HoloLensの環境構築でつまずいたのでメモ

Unity2017 と Visual Studio 2017 15.3 の環境でビルドに失敗

Unity2017 でビルドした後、生成される.slnファイルをVisual Studio 2017 15.3でビルドすると、以下のエラーが出る。

エラー内容

重大度レベル  コード   説明  プロジェクト  ファイル    行 抑制状態
エラー       コマンド ""C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\Unity\Tools\SerializationWeaver\SerializationWeaver.exe" "C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\bin\x86\Release\Unprocessed\Assembly-CSharp-firstpass.dll" "-pdb" "-verbose" "-unity-engine=C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\7-SpatialMapping-Completed\Unprocessed\UnityEngine.dll" "C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\obj\x86\Release\x86\Release" "-lock=C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\project.lock.json" "@C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\SerializationWeaverArgs.txt" "-additionalAssemblyPath=C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\7-SpatialMapping-Completed\Unprocessed" "-unity-networking=C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\7-SpatialMapping-Completed\Unprocessed\UnityEngine.Networking.dll"" はコード 1 で終了しました。 Assembly-CSharp-firstpass   C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\Assembly-CSharp-firstpass.csproj   192 

NuGet パッケージを復元しています...
NuGet がビルド中にパッケージを復元しないようにするには、Visual Studio の [オプション] ダイアログ ボックスを開き、[パッケージ マネージャー] ノードをクリックして、[ビルド中に足りないパッケージをダウンロードすることを NuGet に許可] チェック ボックスをオフにします。
1>------ ビルド開始: プロジェクト: Assembly-CSharp-firstpass, 構成: Release x86 ------
1>  Running SerializationWeaver...
1>  System.Collections.Generic.KeyNotFoundException: 指定されたキーはディレクトリ内に存在しませんでした。
1>     場所 System.ThrowHelper.ThrowKeyNotFoundException()
1>     場所 System.Collections.Generic.Dictionary`2.get_Item(TKey key)
1>     場所 UnityEditor.Scripting.Compilers.NuGetPackageResolver.Resolve()
1>     場所 Unity.NuGetAssemblyResolver..ctor(String projectLockFile)
1>     場所 usw.Weaver.ReaderParameters(String assemblyPath, ConversionOptions options)
1>     場所 usw.Weaver.Weave()
1>     場所 usw.Program.RunProgram(ConversionOptions options)
1>     場所 usw.Program.Main(String[] args)
1>C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\Assembly-CSharp-firstpass.csproj(192,5): error MSB3073: コマンド ""C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\Unity\Tools\SerializationWeaver\SerializationWeaver.exe" "C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\bin\x86\Release\Unprocessed\Assembly-CSharp-firstpass.dll" "-pdb" "-verbose" "-unity-engine=C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\7-SpatialMapping-Completed\Unprocessed\UnityEngine.dll" "C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\obj\x86\Release\x86\Release" "-lock=C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\project.lock.json" "@C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\SerializationWeaverArgs.txt" "-additionalAssemblyPath=C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\7-SpatialMapping-Completed\Unprocessed" "-unity-networking=C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\7-SpatialMapping-Completed\Unprocessed\UnityEngine.Networking.dll"" はコード 1 で終了しました。
2>------ ビルド開始: プロジェクト: Assembly-CSharp, 構成: Release x86 ------
2>CSC : error CS0006: メタデータ ファイル 'C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\bin\x86\Release\Assembly-CSharp-firstpass.dll' が見つかりませんでした。
3>------ ビルド開始: プロジェクト: 7-SpatialMapping-Completed, 構成: Release x86 ------
3>CSC : error CS0006: メタデータ ファイル 'C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp-firstpass\bin\x86\Release\Assembly-CSharp-firstpass.dll' が見つかりませんでした。
3>CSC : error CS0006: メタデータ ファイル 'C:\Users\nagar\Documents\HolographicAcademy-Holograms-101\CatchUpChapters\7-SpatialMapping-Completed\App\GeneratedProjects\UWP\Assembly-CSharp\bin\x86\Release\Assembly-CSharp.dll' が見つかりませんでした。
========== ビルド: 0 正常終了、3 失敗、0 更新不要、0 スキップ ==========

原因と対策

原因はUnity2017のバグ。
対策として、パッチリリースをインストールすることで解決する。

パッチリリースのダウンロードは以下。

Unity2017.1を使っている場合
Unity 2017.1.0p5

Unity2017.2を使っている場合
Unity 2017.2.0b7

参考

Official .NET scripting backend and Visual Studio 2017.3 incompatibility
(Solved) Error while building project hololens - Error: CS0006 “…\Assembly-CSharp-firstpass.dll” can not found
Hololens Apps Will No Longer Build - Cites Metadata file missing and c-Sharp.firstpass not found
Hololens Build Failing - The command AssemblyConverter.exe exited with code 1