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

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] (http://beta.unity3d.com/download/de463fc61bac/UnityDownloadAssistant-2017.1.0p5.exe)

Unity2017.2を使っている場合
[Unity 2017.2.0b7] (http://beta.unity3d.com/download/4bc201a72e4a/UnityDownloadAssistant-2017.2.0b7.exe)

## 参考
[Official .NET scripting backend and Visual Studio 2017.3 incompatibility] (https://forum.unity3d.com/threads/net-scripting-backend-and-visual-studio-2017-3-incompatibility.487833/)
[(Solved) Error while building project hololens - Error: CS0006 “…\Assembly-CSharp-firstpass.dll” can not found] (https://stackoverflow.com/questions/45941755/solved-error-while-building-project-hololens-error-cs0006-assembly-csh)
[Hololens Apps Will No Longer Build - Cites Metadata file missing and c-Sharp.firstpass not found] (https://stackoverflow.com/questions/37447300/hololens-apps-will-no-longer-build-cites-metadata-file-missing-and-c-sharp-fir)
[Hololens Build Failing - The command AssemblyConverter.exe exited with code 1] (https://stackoverflow.com/questions/45877765/hololens-build-failing-the-command-assemblyconverter-exe-exited-with-code-1/45891043#45891043)