技術と趣味の亜空間

主にゲームプログラミングとその周辺に関する記事を不定期で上げていきます

Unityで .NET 4.x にするとVisual Studio Code のC#拡張が機能しなくなったので修正した話

概要

MacのUnityで .NET 4.x 系に切り替えたところ、Visual Studio Code (以下、VSCode) のC#拡張プラグイン1が機能しなくなったので、再び利用できるようにするための修正方法を備忘録も兼ねて記載します。

修正方法

  1. monoのバージョン5.8以上をインストールする。HomeBrewのコマンド brew install mono でインストールするのがおすすめです
  2. 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/" のようにバージョンで直接指定します。