Visual Studio Codeをダウンロードしたところ、Intellisenseが自動的に動作しません。
これを制御する2つの設定は正しく設定されているようです。
"editor.quickSuggestions": true,
"editor.suggestOnTriggerCharacters": true,
入力を開始し、「CTRL +スペース」を押すと、Intellisenseメニューが表示されますが、これにより、オブジェクトのリストではなく、すべてのリストが表示されます。
何が間違っていますか?
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はそれらすべてをロードしようとします。
0.5バージョンの時点で、作業ファイルを閉じて再度開き、新しいインテリセンス情報を取得して自分のファイルで作業を開始する必要があることがわかりました。これは通常、作成したばかりの別のファイルの型情報を使用する必要があるファイルを開いた後に発生します。 (エディター内で)それらを閉じて再度開くまで、インテリセンスは常に機能しません。
願わくば、これがアプリの成熟とともに修正されることを願っています。
インテリジェンスを機能させるためには、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
を更新する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に戻す必要があります。奇妙な。
これまでのところ、C#でこの拡張機能を使用して良い経験がいくつかありました。 https://marketplace.visualstudio.com/items?itemName=jchannon.csharpextensions
「この拡張機能は、フォルダーツリーを上に移動してproject.jsonまたは* .csprojを見つけ、それを親フォルダーとして使用して名前空間を決定します。」
このケースは、以前は正常に機能していた既存のプロジェクト用でした。 vs codeの「最近の」履歴で開きました。
ドットネットコア用。プロジェクトの* .csprogファイルを開き、変更を加えず、vsコードエディターで保存しました。
保存するとすぐに、すべてのインテリセンスがそのプロジェクト内の他のファイルで再び機能し始めます。
コマンドPalleteから「Install Extension」を試してください-おそらくC#intellisenseがない場合:
いくつかのことを試した後、OmniSharpログを見て、ワークスペースに2つの異なるslnファイルがあったことを認識しました。 「他の」ものを拾い上げていたため、機能していませんでした。私はそれを削除し、vs codeで再開しましたが、すべて順調です。
私にとっては、インターネットなしで長い間働いていました。以前は機能していましたが、その後停止しました。 VSCodeを安定したwifi接続で閉じてから再度開き、VSCodeのOutput
タブがポップアップし、拡張機能が再インストールされていることを表示しました。その後、うまくいきました!