Unityで .NET 4.x にするとVisual Studio Code のC#拡張が機能しなくなったので修正した話
概要
MacのUnityで .NET 4.x 系に切り替えたところ、Visual Studio Code (以下、VSCode) のC#拡張プラグイン1が機能しなくなったので、再び利用できるようにするための修正方法を備忘録も兼ねて記載します。
修正方法
- monoのバージョン5.8以上をインストールする。HomeBrewのコマンド
brew install mono
でインストールするのがおすすめです - VSCodeのユーザー設定ファイルで、omnisharpを強制的にグローバルなmonoを参照するようにします。
"omnisharp.useGlobalMono": "always"
すると以下のようなログがでると思います
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator Located 2 MSBuild instance(s) 1: Mono 15.0 - "/usr/local/lib/mono/msbuild/15.0/bin" 2: StandAlone 15.0 - "/Users/x/vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin" [info]: OmniSharp.MSBuild.Discovery.MSBuildLocator Registered MSBuild instance: Mono 15.0 - "/usr/local/lib/mono/msbuild/15.0/bin"
基本的には上記でOKですが、それでもエラーが発生する場合は間違ったmono(古いやつとか)を参照している可能性があります。この問題はユーザー設定ファイルにて、omnisharpが参照するmonoのパスを指定してあげれば解決します。
"omnisharp.monoPath": "/usr/local/"
または
"omnisharp.monoPath": "/usr/local/Cellar/mono/5.18.0.255/"
のようにバージョンで直接指定します。