VSCodeでUnityの補完が効かなくなったときの解決方法(OmniSharpの問題)

UnityのコードエディタとしてVSCode(VisualStudioCode)を使っていた時の話。

つい数日前まではいつも通り使えていたのですが、突然Unityの補完が効かなくなってしまいました。

 

普段ならTransform型が候補に出てくるはず

  

 

まず試したこと

まず、よくある解決方法として「.csprojファイルや.slnファイルを消して再生成する」というのがあります。

 

VSCodeとUnityを一度閉じて、プロジェクトフォルダ内の.csprojファイルと.slnファイルを全て削除します。(後ほど自動生成されるので大丈夫ですが、念の為バックアップは確認。)

 

その後、Unityを起動してメニューバーの Assets > Open C# Project を選択し、VSCodeを開くという解決方法。

 

 

今回の場合、これでは解決しませんでした。

 

Visual Studio Code Editorの問題

以前このような記事を書きました。

 

Unityの2019.2以降でVSCodeを使う際は、PackageManagerからVisual Studio Code Editorというパッケージを入れる必要があります。

 

そのバージョンによっても挙動が変わったりするようなので、前に自分で書いた上記記事を参考に対応してみましたが、今回は解決しませんでした。

 

.NETFrameworkのバージョンが問題

VSCodeのOUTPUTを開き、OmniSharpのログを見てみるとたくさんのエラーが出ていることに気づきました。

 

その中のひとつがこれ。

[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

 

どうやら.NETFrameworkのバージョン4.7.1が見つからない、ということでエラーになっているようです。

書いてあるリンク( https://aka.ms/msbuild/developerpacks ) を開いてみたのですが、Windows用のものしかダウンロードできなさそうだったので、再びいろいろ調べていくと・・・

 

 

 

VSCodeのSettingsで「Omnisharp: Use Global Mono」という項目を「always」にすると良いという話を見つけました。

 

VSCodeのSettingsを開いて「useGlobalMono」と検索し、出てきた「Omnisharp: Use Global Mono」の項目を「always」に変更します。(元は「auto」になっていた)

 

変更すると、右下に「設定の変更を反映しますか?」という旨のポップアップが表示されたので、「Restart OmniSharp」をクリック。

 

VSCode自体は再起動せず、OmniSharpのみ再起動されます。

 

 

これによってUnityの補完が効くようになりました!

コメント