C# Dev Kit FAQ
この FAQ (よくあるご質問) のトピックを使用して、C# Dev Kit 拡張機能について詳しく学び、発生している問題のトラブルシューティングを行います。
一般
C# Dev Kit とは何ですか?
C# Dev Kit は、Visual Studio Code での C# 開発体験を向上させるために作られた拡張機能です。VS Code に、より広範囲で生産的、かつ信頼性の高い C# 体験をもたらすことを目指しています。C# Dev Kit は 既存の C# 拡張機能を置き換えるものではなく、それが提供する優れた言語サービス機能の上に追加されるものです。開発者は、既存の C# 拡張機能の更新版を引き続き使用するか、C# Dev Kit を追加して体験を向上させるかを選択できます。
現在サポートされているプロジェクトの種類は何ですか?
C# Dev Kit は、.NET Core (しばしば .NET とも呼ばれる) 向けの Web アプリ、コンソールアプリ、クラスライブラリプロジェクト、テストプロジェクトのビルドをサポートしています。.NET MAUI 拡張機能と Unity 拡張機能は、C# Dev Kit 上に構築されており、.NET Multi-platform App UI (MAUI) アプリや Unity アプリのビルドのための追加サポートを提供します。これらの拡張機能は、「SDK スタイル」プロジェクトとしても知られる最新の .NET プロジェクト形式をサポートしています。.NET Framework アプリや Xamarin アプリのような非 SDK 形式のプロジェクトをビルドしている場合は、プロジェクトシステムのセクションを参照してください。
C# Dev Kit にはどの拡張機能が含まれていますか?
現在、C# Dev Kit ファミリーに含まれる拡張機能は以下の通りです。
これらの拡張機能の使用は、C# Dev Kit ファミリー拡張機能の EULA に基づいて管理されます。
これらの拡張機能には、独自のライセンスを持つ依存関係もあります。たとえば、C# Dev Kit は C# 拡張機能と .NET Install Tool に依存しています。
C# Dev Kit がアクティブ化されない / C# Dev Kit コマンドが見つからないのはなぜですか?
C# ファイルを編集しようとしたときに C# Dev Kit がアクティブ化されない理由はいくつかあります。
- C# 拡張機能のバージョン 2.0 以降がインストールされていない。C# Dev Kit には、C# 拡張機能のバージョン 2.0 以降が必要です。C# 拡張機能がインストールされており、バージョン 2.0 以降であることを確認してください。
- ワークスペースが C# 拡張機能を優先している。C# Dev Kit は .NET Framework プロジェクトをサポートしておらず、
dotnet.preferCSharpExtension
設定を true にしている場合、そのワークスペースでは C# Dev Kit が無効になります。プロジェクトが .NET Framework プロジェクトでない場合は、この設定を無効にしてください。 - 読み取り専用の OS を使用している。C# Dev Kit は、自身の拡張機能フォルダーと、拡張機能がオペレーティングシステム内に任意の状態を書き込むために VS Code が提供するフォルダーへの書き込みアクセスを必要とします。そのため、完全に読み取り専用の OS を使用している場合、C# Dev Kit は動作しません。
これらを確認しても C# Dev Kit コマンドが見つからない場合は、問題を報告し、C# Dev Kit の出力ウィンドウの情報を提出してください。
ライセンスと貢献
誰が C# Dev Kit を使用できますか?
C# Dev Kit は、資格のある方向けにコミュニティライセンスで利用可能であり、また既存の Visual Studio サブスクリプションへの追加機能としても含まれています。これは、C# Dev Kit が、アクティブな Visual Studio サブスクリプションを持つ開発者が今日から利用できることを意味します。
個人、学術、オープンソースプロジェクトの場合、C# Dev Kit は無料で利用できます。商用目的の場合、最大5人までのチームも無料で C# Dev Kit を利用できます。6人以上の開発者の場合、それらのユーザーは Visual Studio Professional (またはそれ以上) のサブスクリプションが必要になります。C# Dev Kit は GitHub Codespaces と Microsoft Dev Box にも含まれているため、これらの製品のユーザーは追加料金なしで C# Dev Kit にアクセスできます。
フィードバックや提案はどこに提出すればよいですか?
ユーザーは、VS Code の [ヘルプ] > [問題を報告] から問題や提案を報告できます。それがバグ、機能リクエスト、またはパフォーマンスの問題であるかを選択し、[拡張機能] を対象として、拡張機能のリストから C# Dev Kit を選択してください。
C# Dev Kit はオープンソースですか? なぜそうではないのですか?
いいえ。C# Dev Kit はクローズドソースですが、オープンソースである C# for VS Code 拡張機能に依存しており、両方とも Roslyn や Razor といったオープンソースコンポーネントと通信します。C# Dev Kit の目標の1つは、VS Code を使用する C# 開発者に改善された生産性体験を提供することです。これを達成するために、C# Dev Kit には、当社の他のツールと共有されるいくつかのプロプライエタリなクローズドソース機能が含まれています。これらの体験を VS Code ユーザーに提供するためには、C# Dev Kit をクローズドソースの拡張機能として導入する必要がありました。
どのように貢献できますか?
C# Dev Kit の一部である C# 拡張機能は完全にオープンソースであり、これらのライセンス条項の対象となります。この拡張機能のソースコードは https://github.com/dotnet/vscode-csharp で入手可能であり、MIT ライセンスの下でライセンスされています。
このプロジェクトは、私たちのコミュニティで期待される行動を明確にするために Contributor Covenant によって定義された行動規範を採用しています。詳細については、.NET Foundation Code of Conduct を参照してください。CLA に署名することにより、コミュニティはあなたの貢献を .NET Foundation プロジェクトで自由に使用できます。
.NET SDK
インストールスクリプトがタイムアウトしました
ネットワーク速度によっては、.NET Core ランタイムのインストールに時間がかかる場合があることに注意してください。デフォルトでは、インストールが完了するまでに 4.5 分以上かかると、失敗して終了します。これがダウンロードに許容される時間として短すぎる (または長すぎる) と思われる場合は、dotnetAcquisitionExtension.installTimeoutValue
をカスタム値に設定することで、タイムアウト値を変更できます。
VS Code の設定方法について詳しくはこちらを参照し、以下の settings.json
ファイルのカスタムタイムアウトの例をご覧ください。この例では、カスタムタイムアウト値は 180 秒、つまり 3 分です。
{
"dotnetAcquisitionExtension.installTimeoutValue": 180
}
.NET SDK の取得エラー
注: 中国にお住まいの場合、.NET SDK のダウンロードがブロックされ、タイムアウトが発生する可能性があります。
.NET SDK がインストールされていることを確認する必要があります。回避策として、.NET ランタイム取得拡張機能を既存の .NET インストールにポイントすることができます。
.NET を手動でインストールするにはどうすればよいですか?
.NET のインストールが失敗する場合や、既存の .NET インストールを再利用したい場合は、dotnetAcquisitionExtension.existingDotnetPath
設定を使用できます。.NET は、C# Dev Kit ウォークスルーまたは .NET の Web サイトから手動でインストールできます。拡張機能をそのインストールに向けるには、以下に示すように拡張機能 ID とパスで設定を更新してください。
Windows
{
"dotnetAcquisitionExtension.existingDotnetPath": [
{
"extensionId": "msazuretools.azurerm-vscode-tools",
"path": "C:\\Program Files\\dotnet\\dotnet.exe"
}
]
}
macOS
{
"dotnetAcquisitionExtension.existingDotnetPath": [
{
"extensionId": "msazuretools.azurerm-vscode-tools",
"path": "/usr/local/share/dotnet/dotnet"
}
]
}
拡張機能は、400 または 407 のエラー応答でオフラインだと判断し、プロキシを使用しています
システムがプロキシを使用し、レジストリアクセスが無効になっている場合は、拡張機能の設定でプロキシ URL を明示的に設定する必要があります。プロキシは環境変数とレジストリを介して設定されている場合に自動的に検出されますが、プロキシがレジストリキーのみで管理されており、レジストリアクセスが無効になっている場合、拡張機能はそれを見つけることができません。プロキシ URL を設定するには、以下の拡張機能設定を追加してください。
{
"dotnetAcquisitionExtension.proxyUrl": "https://your_proxy_url:port"
}
プロジェクト システム
ソリューション エクスプローラーが、私のプロジェクトは C# Dev Kit でサポートされていないと報告します
これは通常、プロジェクトが .NET Core/.NET ではなく .NET Framework をターゲットにしているためです。現時点では、C# Dev Kit は .NET Framework プロジェクトをサポートしていません。
この問題を解決するには、2つの選択肢があります。
プロジェクトを SDK スタイルのプロジェクトに更新して、利用可能なすべての C# Dev Kit 機能にアクセスできます。
あるいは、設定エディターの Prefer CSharp Extension ワークスペース設定を使用して、プロジェクトとソリューションの読み込みを C# 拡張機能に委任することもできます。この設定では、一部の C# Dev Kit 機能が利用できなくなることに注意してください。この設定にアクセスするには、設定エディターに移動し、[ワークスペース] タブを選択します。次に、検索バーで "Prefer CSharp" を検索し、Prefer CSharp Extension 設定の横にあるチェックボックスをオンにします。.NET Framework プロジェクトを読み込もうとすると、C# Dev Kit は自動的に通知を表示し、プロジェクトを SDK スタイルのプロジェクトに更新するか、通知から [C# 拡張機能を使用] を選択して C# 拡張機能にプロジェクトまたはソリューションを読み込ませるかを尋ねます。このオプションは、自動的に Prefer CSharp Extension 設定を選択します。この設定を有効にするには、VS Code をリロードする必要があることに注意してください。
「.NET プロジェクトを作成」ボタンをクリックしましたが、何も起こりませんでした
これは通常、拡張機能のバージョンの不一致がある場合に発生します。C# Dev Kit には、C# 拡張機能のバージョン 2.0 以降が必要です。C# 拡張機能の v1 を使用している場合、C# Dev Kit および C# Dev Kit 関連のコマンドは正しく動作しません。これを修正するには、C# 拡張機能を最新バージョンにアップグレードしてください。
プロジェクト システムが問題に遭遇したと報告します
内部プロジェクトシステムエラーが発生した場合、通常、VS Code の隅に次のような通知が表示されます。
[ログを開く] ボタンを選択して、問題が発生した場所のスタックトレースを示すビューを開きます。ログ内のすべてのテキストを選択してコピーします。VS Code を通じて問題を報告し、ログからコピーしたテキストを必ず含めてください。
ソリューションを開くと、「ソリューションの復元に失敗しました」という通知が表示されます
[エラーを表示] を選択します。これにより、NuGet の出力パネルが開きます。エラーを読んで、パッケージの復元が完了できなかった理由を判断してください。問題を解決できない場合は、VS Code を通じて問題を報告してください。
ソリューション エクスプローラーに「互換性のある .NET SDK が見つかりませんでした」と表示されます
このエラーの最も可能性の高い原因は、システムにインストールされているものとは異なる SDK を指定する global.json
ファイルです。
出力ウィンドウを開き、[プロジェクト] ペインに切り替えて詳細情報を確認します。次のようなものが表示されるはずです。
この問題を修正するには、global.json
を更新してインストール済みの SDK を指定するか、.NET のダウンロードページから指定された SDK をインストールします。
次に、ワークスペースを閉じて再度開きます。
SDK が C# Dev Kit に認識されている場所にインストールされていない可能性もあります。これは、たとえば、SDK が Microsoft 提供のインストーラーではなく、パッケージマネージャーによってインストールされた場合に発生する可能性があります。これを修正するには、パッケージマネージャー経由で SDK をアンインストールし、その後 .NET のダウンロード経由でインストールします。
テスト エクスプローラー
なぜテストがテスト エクスプローラー パネルに表示されないのですか?
ソリューションにテストプロジェクトが含まれていることを確認してください。開いているソリューションの一部であるテストプロジェクトのみが含まれます。テストプロジェクトがソリューションの一部であるかどうかを確認するには、ファイルエクスプローラーでソリューション エクスプローラー ビューを開き、プロジェクトがツリーに表示されるかどうかを確認します。ソリューションノードを右クリックして、既存のテストプロジェクトを追加するか、ソリューションに新しいテストプロジェクトを作成します。
C# Dev Kit では、テストがテスト エクスプローラー パネルに表示される前に、プロジェクトが正常にビルドされている必要もあります。また、プロジェクト/ソリューションで [クリーン] が実行されると、テスト DLL はテスト エクスプローラー パネルから削除されます。
テストプロジェクトがソリューションの一部であることを確認したら、ソリューション エクスプローラーでソリューションを右クリックして [ビルド] を選択するか、⇧⌘B (Windows, Linux Ctrl+Shift+B) を使用してソリューションをビルドします。ビルドが完了すると、テストがテスト エクスプローラー パネルに表示されます。
それでもテストが表示されない場合は、以下の追加のチェックを検討してください。
- サポートされている .NET Core SDK: プラットフォームとマシンでサポートされている .NET Core SDK を使用していることを確認してください。一部の SDK は特定のオペレーティングシステムやアーキテクチャでは動作しません。詳細については、公式の .NET ダウンロードページを確認してください: https://dotnet.microsoft.com/en-us/download。
- 有効な SDK のインストール: 有効な SDK のインストールが検出されていることを確認します。診断ロギングを有効にすることで、.NET プロジェクトでどの SDK が検出されているかを確認できます。ASDF や Mise のようなサポートされていないツールを介してインストールされた .NET SDK は、Microsoft の公式インストール方法から逸脱しているため、検出されない場合があることに注意してください。公式の手順に従うことをお勧めします。
- ビルド出力: ビルドが完了し、
.dll
や.exe
ファイルなどの対応する出力バイナリが生成されていることを確認します。 - プロジェクトの読み込み: すべてのプロジェクトの読み込みが完了していることを確認します。ソリューション エクスプローラーで、テストプロジェクトの横にあるテストアイコンを探して、それらが検出されていることを確認します。
テストはテスト エクスプローラー パネルに表示されますが、デバッグできません
テストが NET Core を対象としていることを確認してください。C# Dev Kit は .NET Framework プロジェクトをサポートしていませんが、.NET Framework プロジェクトは読み込まれて動作するように見える場合があります。VS Code のデバッガーは .NET Framework をサポートしていません。
テストプロジェクトに新しいテストを追加しましたが、テスト エクスプローラー パネルに表示されません
C# Dev Kit は、テストがテスト エクスプローラー パネルに表示される前に、プロジェクトが正常にビルドされている必要があります。
ソリューション エクスプローラーでソリューションを右クリックして [ビルド] を選択するか、⇧⌘B (Windows, Linux Ctrl+Shift+B) でソリューションをビルドします。ビルドが完了すると、テストがテスト エクスプローラー パネルに表示されます。
テスト エクスプローラーでテストが検出または実行されないのはなぜですか?
テストプロジェクトが MSTest、NUnit、xUnit v3、または TUnit テストフレームワークを介して Microsoft Testing Platform (MTP) を使用している場合、MTP は従来の VSTest プラットフォームとは異なるため、テストがテスト エクスプローラーで検出または実行されない可能性があります。これを解決するには、Visual Studio Code で「Testing Platform Protocol を使用する」設定を有効にして、C# Dev Kit が MTP テストプロジェクトと通信できるようにする必要があります。
設定を有効にするには、次の手順に従います。
- VS Code で設定を開く: [ファイル] > [基本設定] > [設定] に移動します (または ⌘, (Windows, Linux Ctrl+,) を押します)。
- 設定の検索バーに "Test Window" と入力して結果をフィルタリングします。
- C# Dev Kit 拡張機能設定の下にある Dotnet > Test Window: Use Testing Platform Protocol 設定を見つけます。
- チェックボックスをオンにして有効にします (または「オン」に切り替えます)。
- コマンド パレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) で [ウィンドウの再読み込み] コマンドを実行して VS Code をリロードします。
この設定を有効にすると、テストがテスト エクスプローラーで適切に検出および実行されるはずです。
テスト エクスプローラーの問題をトラブルシューティングするためにログを収集するにはどうすればよいですか?
テスト エクスプローラーで問題が発生している場合は、診断ロギングを有効にして、トラブルシューティングのための詳細情報を収集できます。
- テスト エクスプローラーの詳細度を上げる: C# Dev Kit の設定に移動し、Test Explorer Verbosity 設定を
minimal
からdiagnostic
に変更します。これにより、より詳細なログが生成されます。 - 出力ウィンドウを確認する: Visual Studio Code で出力ウィンドウを開き、ドロップダウンから C# Dev Kit - Test Explorer を選択します。診断メッセージは
[dev]
プレフィックス付きで表示されます。 - 次の情報を収集する: 問題を報告する際は、必ず以下を含めてください。
- 出力ウィンドウからの診断ログ。
- お使いのオペレーティングシステムとバージョン (例: Windows 10, macOS 13)。
- 使用している C# Dev Kit 拡張機能のバージョン。拡張機能ビューに移動し、拡張機能の上にカーソルを合わせるとバージョン情報が表示されます。
この情報は、問題をより効率的に診断し、解決するのに役立ちます。
デバッガー
F5 を押しても何も起こりません
C# プロジェクトが開かれているか、アクティブなドキュメントが .cs
または .razor
ファイルであることを確認してください。それでもデバッガーがロードされない場合は、C# Dev Kit と C# 拡張機能の両方がアクティブ化されていることを確認してください。
F5 を押すと、「デバッガーを選択」と尋ねられます。どれを選べばよいですか?
.NET コンソールアプリケーション、Blazor Server アプリ、Blazor WebAssembly、または Web アプリケーションをデバッグしようとしている場合は、必ず C# オプションを選択してください。その他のオプションは、JavaScript デバッグ用の Node や Python デバッグ用の Python など、他の拡張機能の一部である可能性があり、C# Dev Kit の一部ではありません。
F5 を押すと、パスワードの入力を求められます (macOS のみ)
macOS では、デフォルトで開発者モードが無効になっており、プログラムがデバッガーとして使用されようとすると、ユーザーを保護するためにパスワードを要求します。
これらのプロンプトを無効にしたい場合は、次のコマンドを実行できます。
DevToolsSecurity --enable
sudo dscl . append /Groups/_developer GroupMembership $USER
なぜデバッグが機能しないのですか?
ライブラリやテストプロジェクトをデバッグしようとしている場合、コードが適切にデバッグされるようにするためにいくつかの追加手順が必要になる可能性があります。ライブラリをデバッグするには、ライブラリと対話するコンソールまたは Web アプリケーションを作成できます。テストプロジェクトの場合、テスト エクスプローラーを使用してコードを効果的にデバッグできます。
デバッグ中にブレークポイントがバインドされません
デバッグしているプロセスがデバッグモードでビルドされていません。プロセスをデバッグする前に、デバッグモードでビルドしてください。
C# エディター
IntelliSense を正しく機能させるにはどうすればよいですか?
プロジェクトまたはソリューションが開かれていることを確認してください。複数のソリューションがある場合、拡張機能は自動的に1つを開くか、開くように促します。次に、設定の検索バーで "Trace" を検索し、Dotnet > Server: をドロップダウンから Trace に設定します。このオプションは、開発チームが問題を診断するのに役立つ、より多くの出力情報を提供します。
この変更を行ったら、コマンド パレットを開き (⇧⌘P (Windows, Linux Ctrl+Shift+P))、"Reload Window" と入力して Enter を押してウィンドウをリロードします。ウィンドウをリロードした後、出力パネル (⇧⌘U (Windows Ctrl+Shift+U, Linux Ctrl+K Ctrl+H)) でプロジェクトログを確認し、ドロップダウンから Projects を選択します。これにより、プロジェクトが完全にロードされていないことに関連するエラーが表示されます。出力パネルのすべてのテキストをコピーし、VS Code を通じて問題を報告し、コピーしたテキストを必ず含めてください。
C# 拡張機能がサーバーの起動に失敗します
回避策として、dotnetAcquisitionExtension.existingDotnetPath
設定を使用して、.NET ランタイム取得拡張機能を既存の .NET 7 インストールにポイントすることができます。
{
"dotnetAcquisitionExtension.existingDotnetPath": [
{
"extensionId": "msazuretools.azurerm-vscode-tools",
"path": "C\\Program Files\\dotnet\\dotnet.exe"
}
]
}
診断が多すぎる、または少なすぎます
C# 拡張機能では、さまざまなバックグラウンドコード分析設定を構成できます。設定にアクセスするには、[ファイル] > [基本設定] > [設定] に移動するか、キーボードショートカット (⌘, (Windows, Linux Ctrl+,)) を使用します。検索バーに "analysis" と入力して、コード分析に関連する設定を絞り込みます。Run background code analysis for: の下で、ドロップダウンメニューから分析スコープを選択できます。デフォルト設定は開いているファイルを分析することですが、フルソリューション、なし、または開いているドキュメントにカスタマイズできます。
EditorConfig ファイルを使用して、診断とコード分析を構成することもできます。EditorConfig について詳しく知るには、ドキュメントを確認してください。
十分な診断が表示されない、またはまったく表示されない場合は、プロジェクトが完全にロードされていない可能性があります。これが当てはまるかどうかを確認するには、IntelliSense を正しく機能させるにはどうすればよいですか? のセクションを参照してください。プロジェクトが完全にロードされているかどうかを確認する手順が記載されています。
Razor エディター
ほとんどまたはすべての Blazor コンポーネントに警告が表示されます
Blazor コンポーネントが検出される前に、C# Dev Kit はプロジェクトを正常にロードする必要があります。さらに、Razor 言語サーバーは、プロジェクトの状態を理解するために project.razor.vscode.bin
ファイルが生成されることを必要とします。このファイルが生成されない、またはコンポーネントなしで生成されると、Razor のエクスペリエンスに影響が出る可能性があります。
パフォーマンスを向上させるために、拡張機能は、最初の .razor
または .cshtml
ファイルを開くまで、このファイルの生成または読み込みを遅延させることがあります。使用しようとしているプロジェクトのソリューション エクスプローラーにエラーがないことを確認するために、注意深く確認してください。
プロジェクトが正しくロードされた場合は、ファイルシステムの obj\Debug\<tfm>
フォルダーに project.razor.vscode.bin
ファイルが存在することを確認してください。これはバイナリファイルであるため、ファイルの内容を直接確認するのは簡単ではありませんが、一般的にほとんどの Razor プロジェクトでは、少なくとも 150KB のサイズのファイルが生成されるはずです。ファイルが数キロバイトしかない場合は、タグヘルパーやコンポーネントが正しく検出されていない可能性があります。
ファイルを強制的に再生成するには、開いている .razor
または .cshtml
ファイルをすべて閉じ、VS Code ウィンドウをリロードし、プロジェクトが正しくロードされたら、任意の .razor
または .cshtml
ファイルを開いて再生成プロセスをトリガーします。
Razor ファイルでターゲットフレームワークのエラーが言及されています
Razor 言語サーバーは一般的に「ソリューション」の概念を持たず、代わりにプロジェクトの obj\Debug\<tfm>
フォルダー内の project.razor.vscode.bin
ファイルの存在に基づいてプロジェクトをロードします。時々、使用されなくなったターゲットフレームワークの古いファイルが混乱を引き起こし、Razor サーバーがプロジェクトがマルチターゲットであるか、または一部のコンポーネントが実際には参照されていないのにまだ参照されていると誤認させることがあります。
この問題を解決するには、obj
フォルダー内の古いフォルダーをクリアするか、それらをすべてクリアします。その後、VS Code ウィンドウをリロードし、.razor
ファイルを開きます。これにより、新しい JSON ファイルが生成され、古いものが削除されるはずです。
IntelliCode
行全体の補完が表示されません
GitHub Copilot 拡張機能が有効になっている場合、より高度な AI 補完機能を利用できるように、行全体の補完は無効になります。Copilot が有効になっているかどうかは、VS Code の右下隅に Copilot ロゴがあるかどうかで確認できます。
ホット リロード
デバッグを開始した後、ホット リロード アイコンが表示されません
デバッガーは、C# Dev Kit の デバッガー設定でホット リロードのオプションが有効になっている場合にのみ、ホット リロード セッションを開始します。オプションが有効になっている場合、デバッグ中にステータスバーにホット リロード アイコンが表示されることが期待されます。
ホット リロード アイコンをクリックするか、C# Hot Reload 出力ウィンドウを開いて診断情報を確認できます。これらのいずれも表示されない場合、プロジェクトが C# Dev Kit 拡張機能でサポートされていない可能性があります。ホット リロードがサポートするプロジェクトを参照してください。
ホット リロードでサポートされている編集の種類は何ですか?
ホット リロードでサポートされている C# コード変更のリストについては、サポートされているコード変更を参照してください。