![見出し画像](https://assets.st-note.com/production/uploads/images/60240756/rectangle_large_type_2_9889cbfcea0120992aa9ed46489bf702.png?width=1200)
【Unity:VSCode】VSCodeでUnityのインテリセンスを機能させる最小構成
デデドン(絶望)
[fail]: OmniSharp.MSBuild.ProjectLoader
The reference assemblies for .NETFramework,Version=v4.7.1 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks
「VSCodeのインテリセンス(候補)が機能しない…。」「TransformやMathfはどこへいった?」「SDKはいれているはず…。」
”Unity VSCode インテリセンス”で調べてみても「あのファイルを消せ」「あれを更新しろ」と出てくるがそれでも直らない。
結論から言うとTargeting Packが入っていないことによるエラーであった。
つまり、そもそも必要なものが入っていなかった。
この記事では、最低限インストールが必要なものとなぜ必要かを書いていく。
環境
OS :Windows 10 Home
VSCode:1.59.1
Unity:2020.3.16f1
導入の流れ
VSCodeのインストール
Visual Studio Codeで開発したからインストール。
VSCodeの拡張機能をインストール
Visual Studio Codeは拡張機能をインストールしなければ、アプリ内からターミナルが使え、やたらショートカットが設定されたメモ帳でしかない。
そのため、拡張機能でUnity開発ができる状態にする必要がある。
この拡張機能によって日本語化やスニペット(テンプレート)の使用が可能だが、今回はインテリセンスを使うための最小構成のためスルー。
C#
これが無いと基本的なC#のインテリセンスすら使えない。
インストール後、.NETがインストールされていないとVSCodeが右下でインストールの催促をしてくる。
.NETのDeveloper Packをインストール
.NETのSDKとTargeting Packをを一緒にインストールできるパック。
C#では.NETのSDKがライブラリの役割を果たしているらしい。
別々でインストールしても構わないが、Targeting Packは対応するバージョンをインストールしなければならない。例えば、下のエラーメッセージの場合はv4.7.1でなければならない。
[fail]: OmniSharp.MSBuild.ProjectLoader
The reference assemblies for .NETFramework,Version=v4.7.1 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks
Unityのインストール
Unityで開発したいから当然インストールする。
エディターを開いて、「編集」->「環境設定」->「外部ツール」->「外部のスクリプトエディター」を”Visual Studio Code”に変更する。チェックボックスの下にある「Regenerate project files」でプロジェクトファイルを生成する。
念のため、事前にslnファイル、csprojファイルを削除してから生成を行うといい。
これをやっておかないと、モジュールを管理するcsprojファイルが生成されなかったりする。
SDKだけでは足りない
.NETはSDKだけだと上や冒頭のエラーメッセージが出る。
.NETのSDKには、「対象バージョンの機能に制限する」ということができない。そのため、.NET v4.7.1までしか対応していないUnityにそれ以降の機能を提供してしまい可能性がある。
そこで出てくるのがTargeting Packだ。
Targeting Packとは
Targeting Packは対象バージョンの機能に制限する。これによって、うっかりUnityが対応していない機能を使うということを防ぐことができる。
ようは、SDKに.NET 5.0.xをインストールしようが、.NET Core 3.1.xをインストールしようが、Targeting Packが機能を制限してくれるのである。
余談
Developer Packはインストール後、SDKとTargeting Packを別々として扱う。
つまり、Windowsの設定からSDK単体をアンインストールすることができる。
すなわち、
1.Developer Packをインストール
2.用済みの.NET Framework SDKをアンインストール
3.下サイトから新しい.NET SDKをに鞍替えする
という所業が可能なのである(ゲス顔)。
(.NET Core 3.1 で動作確認済み)