Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9366

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

$
0
0

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

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"}}

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

https://github.com/OmniSharp/omnisharp-vscode/issues/3074

関連

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

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


Viewing all articles
Browse latest Browse all 9366

Latest Images

Trending Articles