> ## Documentation Index
> Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# C#, .NET、および CPP

> OmniSharp、clangd、LLDB などのオープンソースツールを使用して、Windsurf で C#、.NET Core、.NET Framework (Mono)、および C++ の開発環境をセットアップするためのセットアップガイド。

<div id="windsurf-development-environment-setup-guide">
  # Windsurf 開発環境セットアップガイド
</div>

<div id="overview">
  ## 概要
</div>

Windsurf のワークスペースは、コンパイル、リント、デバッグにおいてオープンソースのツール群のみを使用します。Microsoft のプロプライエタリな Visual Studio コンポーネントは再配布できないため、コミュニティがメンテナンスする言語サーバー、デバッガー、コンパイラを統合しています。

このガイドでは、次の 2 つのスタックを扱います:

1. **.NET / C#** – .NET Core と .NET Framework（Mono 経由）の両方に対応
2. **C / C++** – clang ベースのツール群を使用

同一のワークスペース内で、いずれか一方または両方をインストールできます。

> ⚠️ **重要**: 以下の例は、プロジェクトごとにカスタマイズが必要なテンプレートです。コードベースに合わせて、ファイルパス、プロジェクト名、ビルドコマンドを編集してください。

***

<div id="1-net-c-development">
  ## 1. .NET / C# 開発
</div>

> **ご利用のコードベースに合った種類を選択してください。**

<div id="net-core-net-6">
  ### .NET Core / .NET 6+
</div>

**拡張機能:**

* **[C#](https://marketplace.windsurf.com/vscode/item?itemName=muhammad-sammy.csharp)** (`muhammad-sammy.csharp`) – **OmniSharp LS** と **NetCoreDbg** を同梱しており、すぐに <kbd>F5</kbd> で実行できます

* **[.NET Install Tool](https://marketplace.windsurf.com/vscode/item?itemName=ms-dotnettools.vscode-dotnet-runtime)** (`ms-dotnettools.vscode-dotnet-runtime`) – 不足しているランタイム/SDKを自動インストール

* **[Solution Explorer](https://marketplace.windsurf.com/vscode/item?itemName=fernandoescolar.vscode-solution-explorer)** (`fernandoescolar.vscode-solution-explorer`) – .NET のソリューションやプロジェクトのナビゲートと管理

**デバッガ:** 追加は不要です—この拡張には言語サーバーと、.NET Core に適したオープンソースのデバッガが含まれています。

**ビルド:** `dotnet build`

<div id="net-framework-via-mono">
  ### Mono を使用した .NET Framework
</div>

**拡張機能:**

* **[Mono Debug](https://marketplace.windsurf.com/vscode/item?itemName=chrisatwindsurf.mono-debug)** (`chrisatwindsurf.mono-debug`) – Mono 用のデバッグアダプター（[Open VSX](https://open-vsx.org/extension/chrisatwindsurf/mono-debug)）
* **[C#](https://marketplace.windsurf.com/vscode/item?itemName=muhammad-sammy.csharp)** (`muhammad-sammy.csharp`) 言語機能用

**デバッガー:** **ワークスペース内に Mono のツールチェーンも必ずインストールしてください。** [Mono リポジトリ](https://gitlab.winehq.org/mono/mono#compilation-and-installation)のインストールガイドに従ってください。デバッガー拡張機能はデバッグ時にそのランタイムへ接続します。

> **⚠️ .NET Framework の構成**: Mono をインストール後、.NET Framework プロジェクトで C# 拡張機能を使用するには、IDE の設定で特定の項目を切り替える必要があります。**Settings**（C# Extension セクション）に移動し、**"Omnisharp: Use Modern Net"** をオフにしてください。この設定は .NET 6 用の OmniSharp ビルドを使用し、SDK スタイルの Framework、.NET Core、.NET 5+ の各プロジェクトで大幅なパフォーマンス向上をもたらします。なお、このバージョンは Unity を含む非 SDK スタイルの .NET Framework プロジェクトをサポートしません。

**ビルド:** `mcs Program.cs`

<div id="configure-tasksjson-for-your-project">
  ### プロジェクト用の `tasks.json` を設定する
</div>

**ワークスペースのルートにある `.vscode/tasks.json` を作成または編集する必要があります。** 次のテンプレートをカスタマイズしてください:

```jsonc theme={null}
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build-dotnet",
      "type": "shell",
      "command": "dotnet",
      "args": ["build", "YourProject.csproj"], // ← ここを編集
      "group": "build",
      "problemMatcher": "$msCompile"
    },
    {
      "label": "build-mono",
      "type": "shell",
      "command": "mcs",
      "args": ["YourProgram.cs"], // ← ここを編集
      "group": "build"
    }
  ]
}
```

<div id="configure-launchjson-for-debugging">
  ### デバッグ用の `launch.json` を設定する
</div>

**ワークスペースのルートにある `.vscode/launch.json` ファイルを作成または編集し**、パスを更新してください。

```jsonc theme={null}
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": ".NET Core Launch",
      "type": "coreclr",
      "request": "launch",
      "preLaunchTask": "build-dotnet",
      "program": "${workspaceFolder}/bin/Debug/net6.0/YourApp.dll", // ← このパスを編集
      "cwd": "${workspaceFolder}",
      "args": [] // Add command line arguments if needed
    },
    {
      "name": "Mono Launch",
      "type": "mono",
      "request": "launch",
      "preLaunchTask": "build-mono",
      "program": "${workspaceFolder}/YourProgram.exe", // ← Edit this path
      "cwd": "${workspaceFolder}"
    }
  ]
}
```

<div id="cli-equivalents">
  ### CLI における対応コマンド
</div>

```bash theme={null}
# .NET Core
$ dotnet build
$ dotnet run

# Mono / .NET Framework
$ mcs Program.cs
$ mono Program.exe
```

<div id="net-framework-limitations">
  ### .NET Framework の制限事項
</div>

⚠️ **重要**: 混合アセンブリ（C++/CLI）や複雑な Visual Studio 依存関係を持つ .NET Framework コードベースには、Windsurf での利用に大きな制限があります。これらのコードベースは通常、Visual Studio 独自のビルドシステムを必要とし、Microsoft 固有のツールやアセンブリ参照解決機構に依存しているため、Windsurf だけでは完全なコンパイルやデバッグを行うことができません。

**.NET Framework プロジェクトに対する推奨アプローチ:**

* コード生成および編集には、Visual Studio と併用して Windsurf を使用する
* 可能な部分は .NET Core へ移行する

***

<div id="2-c-c-development">
  ## 2. C / C++ 開発
</div>

**必須拡張機能:**

| Extension                                                                                                        | Purpose                                                               |
| ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| **[Windsurf C++ Tools](https://open-vsx.org/extension/Codeium/windsurf-cpptools)** (`Codeium.windsurf-cpptools`) | はじめに導入を推奨する3つの拡張機能をまとめたバンドルです。C/C++ の LSP サポート、デバッグ、CMake を含むパッケージです。 |

> **Note:** Windsurf C++ Tools バンドルをインストールすると、以下の個別拡張機能が自動で導入されます。バンドルのみのインストールで問題ありません。

| Extension                                                                                                                                           | Purpose                                                                    |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| **[clangd](https://marketplace.windsurf.com/vscode/item?itemName=llvm-vs-code-extensions.vscode-clangd)** (`llvm-vs-code-extensions.vscode-clangd`) | **clangd** 言語サーバーの統合。`clangd` が見つからない場合は、ご利用のプラットフォームに合ったバイナリのダウンロードを促します。 |
| **[CodeLLDB](https://marketplace.windsurf.com/extension/vadimcn/vscode-lldb)** (`vadimcn.vscode-lldb`)                                              | C/C++ および Rust 向けの LLDB ベースのネイティブデバッガー。                                    |
| **[CMake Tools](https://marketplace.windsurf.com/vscode/item?itemName=ms-vscode.cmake-tools)** (`ms-vscode.cmake-tools`)                            | **CMake** ベースのプロジェクトに対する構成、ビルド、テスト、デバッグの統合。                                |

CMake を使わないワークフローでも、カスタムの `tasks.json` ターゲット経由で `make` や `ninja` などを呼び出せます。

<div id="configure-cc-build-tasks">
  ### C/C++ ビルド タスクの設定
</div>

C/C++ プロジェクト用に **`.vscode/tasks.json` を作成または編集**します：

```jsonc theme={null}
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build-cpp",
      "type": "shell",
      "command": "clang++",
      "args": ["-g", "main.cpp", "-o", "main"], // ← ファイルに合わせて編集
      "group": "build",
      "problemMatcher": "$gcc"
    }
  ]
}
```

***

<div id="3-notes-gotchas">
  ## 3. 注意点とハマりどころ
</div>

* **オープンソースのみ** – プロプライエタリな Microsoft製ツールをインストールするよう求められても拒否してください。Windsurf コンテナにはそれらを含めることはできません。
* **コンテナ vs ホスト** – SDKやコンパイラは、必ず Windsurf ワークスペースコンテナの**内部**にインストールされている必要があります。
* **キーボードショートカット**
  * <kbd>Ctrl/⌘ + Shift + B</kbd> → アクティブなビルドタスクを使ってコンパイルします
  * <kbd>F5</kbd> → 選択した `launch.json` の設定を使ってデバッグします

***

<div id="4-setup-checklist">
  ## 4. セットアップ チェックリスト
</div>

* 使用する言語スタックに必要な拡張機能をインストールする
* プロジェクトのビルドコマンドに合わせて `.vscode/tasks.json` を**作成し、カスタマイズ**する
* 実行可能ファイルへの正しいパスを指定して `.vscode/launch.json` を**作成し、カスタマイズ**する
* Mono の場合: ランタイムをインストールし、`mono --version` で確認する
* ファイルパス、プロジェクト名、ビルド引数をコードベースに合わせて更新する
* セットアップをテスト: <kbd>Ctrl/⌘ + Shift + B</kbd> でビルドし、続けて <kbd>F5</kbd> でデバッグする

> 💡 **ヒント**: 構成ファイルはプロジェクトごとに異なります。各ワークスペースに合わせて上記の例を調整してください。
