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

# C#、.NET、C++

> OmniSharp、clangd、LLDB などのオープンソースツールを使用して、Devin Desktop で C#、.NET Core、.NET Framework（Mono）、C++ の開発を行うためのセットアップガイド。

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

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

Devin Desktop のワークスペースでは、コンパイル、リント、デバッグに**オープンソースのツールのみ**を使用します。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 repo](https://gitlab.winehq.org/mono/mono#compilation-and-installation) のインストール ガイドに従ってください。デバッガー拡張機能は、デバッグ時にそのランタイムに接続します。

> **⚠️ .NET Framework の設定**: Mono をインストールした後、.NET Framework プロジェクトで C# 拡張機能を利用するには、IDE の Settings で特定の設定を切り替える必要があります。**Settings** (C# Extension セクション内) に移動し、**"Omnisharp: Use Modern Net"** をオフにしてください。この設定では .NET 6 向けの OmniSharp build が利用され、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": [] // 必要に応じてコマンドライン引数を追加してください
    },
    {
      "name": "Mono Launch",
      "type": "mono",
      "request": "launch",
      "preLaunchTask": "build-mono",
      "program": "${workspaceFolder}/YourProgram.exe", // ← このパスを編集してください
      "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) .NET Framework のコードベースや、Visual Studio への依存関係が複雑なコードベースには、Devin Desktop で大きな制約があります。これらのコードベースでは通常、Visual Studio 独自のビルドシステムが必要になるため、Microsoft 固有のツールやアセンブリ参照の解決に依存している関係上、Devin Desktop で完全にコンパイルやデバッグを行うことはできません。

**.NET Framework プロジェクトで推奨される対応:**

* コード生成や編集では、Devin Desktop を Visual Studio と併用する
* 可能な部分は .NET Core に移行する

***

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

**必須の拡張機能:**

| 拡張機能                                                                                                             | 目的                                                                                 |
| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **[Windsurf C++ Tools](https://open-vsx.org/extension/Codeium/windsurf-cpptools)** (`Codeium.windsurf-cpptools`) | 初期セットアップ向けに推奨する 3 つの拡張機能をまとめたバンドルです。C/C++ の LSP サポート、デバッグ サポート、CMake サポートが含まれています。 |

> **注:** Windsurf C++ Tools バンドルをインストールすると、以下の個別の拡張機能も自動的にインストールされるため、バンドルのみをインストールすれば十分です。

| 拡張機能                                                                                                                                                | 目的                                                                             |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| **[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 ツールをインストールするよう求めるプロンプトは拒否してください。Devin Desktop コンテナにはそれらを含めることができません。
* **コンテナとホスト** – SDK やコンパイラは、Devin Desktop のワークスペース コンテナ**内**に存在している必要があります。
* **キーボード ショートカット**
  * <kbd>Ctrl/⌘ + Shift + B</kbd> → アクティブな build task を使用してコンパイル
  * <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> を押してデバッグする

> 💡 **ヒント**: 設定ファイルはプロジェクトごとに異なります。各ワークスペースに合わせて、上記の使用例を調整する必要があります。
