VSCodeで.NET 6プロジェクトを開くとCS0518やCS2046が発生する問題の解決方法

この記事は公開から2年以上経過しています。

VSCodeで.NET 6プロジェクトを開いたときにCS2046エラーが発生する問題に遭遇したため、その解決策についての備忘録。


問題

VSCodeで.NET 6プロジェクトのC#ソースを開くとusing System;string xxx;の定義部などで

定義済みの型 ‘System.*’ は定義、またはインポートされていません

型または名前空間の名前 ‘System’ が見つかりませんでした(usingディレクティブまたはアセンブリ参照が指定されていることを確認してください)

のようにCS0518やCS2046エラーが大量発生してしまう(このとき、ビルドや実行/デバッグは問題なく実行できる)。


原因

VSCodeのC#拡張(OmniSharp)がNET 6に対応できるように設定されていない。


対応

以下の手順でC#(OmniSharp)拡張の設定を.NET 6用に変更する。

  1. VSCode設定画面の拡張設定でOmnisharp: Use Modern Netにチェックを入れる。

    file

  2. VSCodeを再起動する。

VSCodeを再起動するとC# OUTPUTウィンドウが表示され、依存関係のあるパッケージが自動インストールされて上述のエラーが発生しなくなります。

Debian 11のC# OUTPUTウィンドウ表示例:

Installing C# dependencies...
Platform: linux, x86_64, name=debian, version=11

Downloading package 'OmniSharp for Linux (.NET 6 / x64)' (40041 KB).................... Done!
Validating download...
Integrity Check succeeded.
Installing package 'OmniSharp for Linux (.NET 6 / x64)'

Finished

ちなみに、このバージョンのOmniSharpはUnityを含む非.SDKスタイルの.NET Frameworkプロジェクトで利用できない制限や、バグが存在する可能性もあるとのことです。

このあたりの詳細についてはC#拡張のReadme.mdや設定項目の説明文を、ご一読ください。


以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする