問題点OmniSharpサーバーが機能していないVS Codeは、実質的にただのテキストエディタにすぎません。このエラーが発生すると、効率的なコーディングを支える機能が失われます。IntelliSense(インテリセンス)が消え、「定義へ移動」が反応しなくなり、構文エラーを知らせる便利な赤い波線も表示されなくなります。通常、これはC#拡張機能が互換性のある.NETランタイムを見つけられないか、SDKバージョンの競合によって発生します。
主な原因- SDKバージョンの不一致: .NET 8.0をインストールしていても、拡張機能が6.0のような古いLTSバージョンを探している場合があります。- アーキテクチャの競合: これはApple Silicon (M1/M2/M3) やARM64 Windowsでよく発生する大きな問題です。ARMマシンにx64のSDKをインストールすると、ランタイムサーバーが音もなく失敗したり、起動時にクラッシュしたりします。- 「Modern .NET」への移行: Microsoftは最近、OmniSharpがランタイムを処理する方法を変更しました。古いプロジェクトではレガシーなMonoビルドが必要な場合が多い一方、新しいプロジェクトでは「Modern」設定を有効にする必要があります。- バイナリの破損: VS Codeのアップデート中に拡張機能のダウンロードが中断され、サーバーファイルが破損した状態で残ることがあります。## ステップバイステップの修正方法### 1. .NET SDKのパスを確認するまず、システムが実際に.NET SDKを認識しているか確認します。ターミナルを開き、以下を入力してください。
dotnet --list-sdks
8.0.204 [/usr/local/share/dotnet/sdk]のようなリストが表示されるはずです。もしコマンドが「command not found」を返す場合は、SDKがシステムのPATHに含まれていません。Microsoftから最新バージョンを再インストールすることで、通常は即座に解決します。
2. 「Use Modern Net」設定を調整するomnisharp.useModernNetの切り替えは、モダンなC#開発における最も頻繁な解決策です。これは、OmniSharpが.NET 6以降のランタイムを使用するか、古いMonoフレームワークを使用するかを制御します。
Ctrl + ,(Macの場合はCmd + ,)を押して設定を開きます。- OmniSharp: Use Modern Netを検索します。- .NET 6、7、または8を使用している場合は、これにチェックが入っていることを確認してください。- 古い.NET Framework 4.7.2プロジェクトで作業している場合は、チェックを外し、Monoがインストールされていることを確認してください。設定を反映させるため、変更後はVS Codeを再起動してください。
3. 出力ログからエラーを探すサーバーが依然として動かない場合は、ログが正確な理由を教えてくれます。推測するのではなく、データを確認しましょう。
- 出力パネルを開きます(
Ctrl + Shift + U)。- 右側のドロップダウンメニューからOmniSharp Logを選択します。- 一番下までスクロールし、赤いテキストを探します。The architecture of the SDK is not compatibleというフレーズを探してください。Macでこれが表示される場合、x64バージョンの.NETをインストールしている可能性があります。それをアンインストールし、代わりにArm64インストーラーをダウンロードする必要があります。
4. 拡張機能のクリーンリセットを実行するファイルが破損した場合、VS Codeがキャッシュを保持しているため、単に「アンインストール」ボタンをクリックするだけでは不十分です。手動でフォルダを削除する必要があります。
- VS Codeで**C#**拡張機能をアンインストールします。- エディタを完全に閉じます。- 拡張機能ディレクトリから
ms-dotnettools.csharpフォルダを削除します。Windows:%USERPROFILE%\.vscode\extensions- macOS/Linux:~/.vscode/extensions- VS Codeを再度開き、拡張機能を再インストールします。### 5. ソリューションを直接指定するワークスペースに複数のフォルダがある場合、OmniSharpが混乱することがあります。.csprojや.slnファイルが見つからないと、サーバーは起動しません。.vscode/settings.jsonに以下を追加することで、正しい場所を強制的に参照させることができます。
"omnisharp.slnPath": "MyProject.sln"
確認方法これらの手順を適用した後、VS Codeの下部にあるステータスバーを確認してください。小さな炎のアイコン、または「OmniSharp」と緑色のチェックマークが表示されているはずです。任意の.csファイルを開き、クラス名の上にマウスを置いてみてください。1〜2秒以内にドキュメントのツールチップが表示されれば、復旧完了です。
安定性を高めるためのヒント同じマシンでx64とARM64のSDKを混在させないでください。サーバーを混乱させる「パスの競合」が発生します。インストーラーをダウンロードする際は、ファイルの整合性を確認して破損したセットアップを避けることをお勧めします。私はよくToolCraftのHash Generatorを使用して、ダウンロードしたファイルのSHA-256ハッシュをMicrosoftの公式チェックサムと比較しています。これには10秒もかかりませんが、破損したバイナリによる何時間ものトラブルシューティングを防ぐことができます。
チームプロジェクトでは、プロジェクトのルートにglobal.jsonファイルを使用してください。これにより、すべての開発者(およびOmniSharp)が8.0.100などのまったく同じSDKバージョンを使用するよう強制され、「自分のマシンでは動く」というバグを排除できます。

