LoginSignup
3
3

More than 3 years have passed since last update.

VSCodeでC#のインテリセンスが効かないとき

Last updated at Posted at 2020-01-24

プロジェクトを開いたときに右下にこれが出る。

SomeProject.jpg

このとき、Output の OmniSharp Log

OmniSharpLog.jpg

に下記のメッセージが出る。

Microsoft.Build.Exceptions.InvalidProjectFileException: 指定された SDK 'Microsoft.NET.Sdk' は見つかりませんでした。  

何が起きているか

OmniSharp(C#のインテリセンス) が使う MSBuild のバージョン?があっていない。

環境変数で、OmniSharp の使う MSBuild を指定する

.NETCore-3.1 で動かす例

MSBuildSDKsPath=C:\Program Files\dotnet\sdk\3.1.100\Sdks (PATHに注意。マイナーバージョンちがうなど C:\Program Files\dotnet\sdk\3.1.101\Sdks)

設定してから、VSCode を再起動してエラーが無くなれば成功。
逆にUnityなどで .NET-4.7 などを対象にする場合は動かなくなるかもしれぬ。

OmniSharpの設定(~/.ominisharp/omnisharp.json)

{
    "MsBuild": {
        "MSBuildSdksPath": "c:/Program Files/dotnet/sdk/3.1.101/Sdks"
    }
}

これはうまくいかなかった。書き方が違うのかもしれない。

関連

上記の記事では、Visual Studio Build Tools 2017 のアンインストール や Visual Studio をインストールするにより、MSBuild のインストール状況が変わるので間接的に解決していると思われる。
MSBuildは、.NETSdk や VisualStudio に付属しているものが知らない間にインストールされることがあるので、OmniSharp が適切なMSBuildを発見できなくなることがありそう。

逆に環境変数 MSBuildSDKsPath が間違って動かない場合もある。

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3