web-dev-qa-db-ja.com

IntellisenseがVSCodeを自動的に機能しない

Visual Studio Codeをダウンロードしたところ、Intellisenseが自動的に動作しません。

これを制御する2つの設定は正しく設定されているようです。

"editor.quickSuggestions": true,
"editor.suggestOnTriggerCharacters": true,

入力を開始し、「CTRL +スペース」を押すと、Intellisenseメニューが表示されますが、これにより、オブジェクトのリストではなく、すべてのリストが表示されます。

何が間違っていますか?

20
MaylorTaylor

Visual Studio Codeのより高度な編集機能(IntelliSense、リファクタリングツールなど)は、VSCodeが認識しているproject.jsonファイルまたは*.slnファイルがある場合にのみC#ファイルで機能します。フォルダーを開きます(つまり、Fileメニューを開き、Open Folder ...*.slnファイルまたはproject.jsonおよびVSCodeを使用すると、フォルダー内のすべてのプロジェクト/ソリューションファイルの検索が試行されます。複数のプロジェクトがある場合は、ステータスバー(ウィンドウの下部)の右側にあるプロジェクトボタンから1つを選択する必要があります。

VSCode Webサイト から:

  • project.json-ファイルを選択するとDNXプロジェクトが開かれ、VSCodeはそのプロジェクトと参照プロジェクトをロードします
  • *.sln-ファイルを選択すると、MSBuildプロジェクトが開かれます。参照される*.csproj- projectsと兄弟または子孫のproject.json- filesを読み込みますが、ソリューションファイルから参照される他のプロジェクトファイルは読み込みません。
  • folderを選択すると、VSCodeは*.slnおよびproject.jsonファイルをスキャンし、VSCodeはそれらすべてをロードしようとします。

enter image description here

38
Nacimota

0.5バージョンの時点で、作業ファイルを閉じて再度開き、新しいインテリセンス情報を取得して自分のファイルで作業を開始する必要があることがわかりました。これは通常、作成したばかりの別のファイルの型情報を使用する必要があるファイルを開いた後に発生します。 (エディター内で)それらを閉じて再度開くまで、インテリセンスは常に機能しません。

願わくば、これがアプリの成熟とともに修正されることを願っています。

6
Sam Storie

インテリジェンスを機能させるためには、Visual Studio Code拡張機能のOmniSharpがMonoと共に存在する必要があります。プロジェクト/ソリューションフォルダーを開くと、OmniSharpはproject.jsonまたはdotnetソリューションファイル(プロジェクト/ソリューションが他のバージョンのVisual Studioで作成された場合)からプロジェクトの依存関係を取得します。

したがって、project/solutionフォルダーをすぐに開いた後、omnisharpの出力ウィンドウを見ると、次の行が表示される場合があります。

Starting OmniSharp server at 2017-9-18 09:26:44
    Target: /Users/{username}/Source/{Your Solution Folder}/{Your Solution
file}.sln

OmniSharp server started wth Mono
    Path: /Users/{username}/.vscode/extensions/ms-vscode.csharp-1.12.1/.omnisharp/run
    PID: 5808

それを投稿すると、次のような行が数行表示されることがあります。

[info]: OmniSharp.MSBuild.MSBuildProjectSystem
        Update project: {Your Project1 Name}
[info]: OmniSharp.MSBuild.MSBuildProjectSystem
        Update project: {Your Project2 Name} 
....

それらは、プロジェクトがOmniSharp Extensionによって認識されることを意味します。

タイムアウトについて通知するエラーメッセージが表示された場合は、Visual Studioコードの設定に入り、以下のような構成オーバーライドを追加してください。

  "omnisharp.projectLoadTimeout": 200

200秒待つには長すぎることはわかっています。しかし、心配する必要はありません。これにより、プロジェクトファイルでの作業が停止することはありません。ただし、フォルダー内のすべてのプロジェクトが正常に読み込まれると、IntelliSenseが自動的に使用可能になることに注意してください。

タイムアウト設定は、すぐに取得することはできませんが、インテリセンスを取得するのに役立ちますので、お気軽に延長してください。

同じソリューションの別のリンクを次に示します。 https://github.com/OmniSharp/omnisharp-vscode/issues/1585

私の情報がお役に立てば幸いです! VSCodeをお楽しみください!

上記のいずれもうまくいかない場合に試す別のトラブルシューティング戦略は、Monoのアンインストールです。これは、.NET Coreを使用している場合は、とにかく不要です。また、ASP.NET Core 2.0から2.1へのアップグレードを含むエンタープライズリポジトリの1つに変更を加えた後、Intellisenseが突然消えました。奇妙なことに、同時に、IntellisenseはASP.NET Core 2.2を実行している別のC#プロジェクトリポジトリで正常に動作していました。

問題のプロジェクトでは、Omnisharpサーバーの再起動ごとにログが成功し、ビルドと実行が完全にクリーンであることに戸惑っていました。これらのOmnisharpログを2.2プロジェクトのログと比較し、事実上同一であることがわかったため、困惑は増大しました。

Monoをアンインストールすると、変更された詳細の1つはOmnisharpの起動方法です。 ~/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/runにあるシェルスクリプトから起動します。以前は、Mono自体が~/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/omnisharp/Omnisharp.exeの実行可能ファイルからサーバーを起動していました。

このインスタンスで私が試みた他のトラブルシューティングは役に立ちませんでした:

  • dotnet clean/binおよびobjディレクトリの削除
  • 適切なlaunch.jsonビルドディレクトリを指すように/bin/Debug/netcoreapp2.1を更新する
  • ローカルのナゲットキャッシュを消去する
  • Omnisharpの再起動
  • VS Codeのアンインストールと再インストール、および破損が2019年3月の更新と奇妙に一致したため、バージョン1.33.1からのバンピングバック
  • C#VS Code拡張機能のアンインストールと再インストール、および特定のプロジェクトのIntellisenseに干渉するバージョンに関する他のユーザーの報告を考慮して、バージョン1.19.0からバージョンを戻す*
  • プロジェクトルートにglobal.jsonファイルを追加して、最新の.NET Core SDK(私の場合は2.2.105)のデフォルトの使用をオーバーライドし、代わりにプロジェクトのバージョンと連携して2.1.302を使用して実行します
  • プロジェクト.slnファイルの消去/再構築

仕様:VS Code 1.33.1、C#Extension 1.19.0、MacOS High Sierra 10.13.6。


* NB:判明したとおり、another上記のVSコードと同じ問題を持つ.NET Core 2.1プロジェクト、Monoだけをアンインストールしても問題は解決しませんでした。私もdidIntellisenseを回復するためにC#拡張をv。1.18.0に戻す必要があります。奇妙な。

2
Ryan Hill

これまでのところ、C#でこの拡張機能を使用して良い経験がいくつかありました。 https://marketplace.visualstudio.com/items?itemName=jchannon.csharpextensions

「この拡張機能は、フォルダーツリーを上に移動してproject.jsonまたは* .csprojを見つけ、それを親フォルダーとして使用して名前空間を決定します。」

1
MungeWrath

このケースは、以前は正常に機能していた既存のプロジェクト用でした。 vs codeの「最近の」履歴で開きました。

ドットネットコア用。プロジェクトの* .csprogファイルを開き、変更を加えず、vsコードエディターで保存しました。

保存するとすぐに、すべてのインテリセンスがそのプロジェクト内の他のファイルで再び機能し始めます。

コマンドPalleteから「Install Extension」を試してください-おそらくC#intellisenseがない場合:

enter image description here

https://code.visualstudio.com/docs/customization/colorizer

1
ShahMansoor

いくつかのことを試した後、OmniSharpログを見て、ワークスペースに2つの異なるslnファイルがあったことを認識しました。 「他の」ものを拾い上げていたため、機能していませんでした。私はそれを削除し、vs codeで再開しましたが、すべて順調です。

0
carlowahlstedt

私にとっては、インターネットなしで長い間働いていました。以前は機能していましたが、その後停止しました。 VSCodeを安定したwifi接続で閉じてから再度開き、VSCodeのOutputタブがポップアップし、拡張機能が再インストールされていることを表示しました。その後、うまくいきました!

0
James L.