見出し画像

【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はいれているはず…。」

画像4

”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ファイルを削除してから生成を行うといい。

スクリーンショット 2021-08-11 170248 (3)_LI

これをやっておかないと、モジュールを管理するcsprojファイルが生成されなかったりする。

SDKだけでは足りない

.NETはSDKだけだと上や冒頭のエラーメッセージが出る。

.NETのSDKには、「対象バージョンの機能に制限する」ということができない。そのため、.NET v4.7.1までしか対応していないUnityにそれ以降の機能を提供してしまい可能性がある。

画像2

そこで出てくるのがTargeting Packだ。

Targeting Packとは

Targeting Packは対象バージョンの機能に制限する。これによって、うっかりUnityが対応していない機能を使うということを防ぐことができる。
ようは、SDKに.NET 5.0.xをインストールしようが、.NET Core 3.1.xをインストールしようが、Targeting Packが機能を制限してくれるのである。

画像3

余談

Developer Packはインストール後、SDKとTargeting Packを別々として扱う。
つまり、Windowsの設定からSDK単体をアンインストールすることができる。

スクリーンショット 2021-08-11 163233

すなわち、
1.Developer Packをインストール
2.用済みの.NET Framework SDKをアンインストール
3.下サイトから新しい.NET SDKをに鞍替えする
という所業が可能なのである(ゲス顔)。
(.NET Core 3.1 で動作確認済み)


いいなと思ったら応援しよう!