プロジェクトを開いたときに右下にこれが出る。
このとき、Output の OmniSharp Log
に下記のメッセージが出る。
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"
}
}
これはうまくいかなかった。書き方が違うのかもしれない。
関連
- https://h.s64.jp/entry/omnisharp_msbuild_2017_conflict
- https://qiita.com/Densyakun/items/42515bb3e5e8b1b8cb7f
上記の記事では、Visual Studio Build Tools 2017 のアンインストール や Visual Studio をインストールするにより、MSBuild のインストール状況が変わるので間接的に解決していると思われる。
MSBuildは、.NETSdk や VisualStudio に付属しているものが知らない間にインストールされることがあるので、OmniSharp が適切なMSBuildを発見できなくなることがありそう。
逆に環境変数 MSBuildSDKsPath
が間違って動かない場合もある。