> ## 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 和 CPP

> 在 Devin Desktop 中使用 OmniSharp、clangd 和 LLDB 等开源工具进行 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 组件无法再分发，我们因此集成了由社区维护的语言服务器、调试器和编译器。

本指南涵盖两种技术栈：

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 后，如需将 C# 扩展用于 .NET Framework 项目，你需要在 IDE 设置中切换一项特定设置。前往 **Settings** (在 C# Extension 部分) ，然后关闭 **"Omnisharp: Use Modern Net"**。此设置使用面向 .NET 6 的 OmniSharp build，可为 SDK 风格的 .NET Framework、.NET Core 和 .NET 5+ 项目带来显著的性能提升。请注意，此版本\_不\_支持非 SDK 风格的 .NET Framework 项目，包括 Unity。

**构建：** `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>

⚠️ **重要**：在 Devin Desktop 中，包含混合程序集 (C++/CLI) 或复杂 Visual Studio 依赖的 .NET Framework 代码库存在明显限制。这类代码库通常需要依赖 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`) | 这是我们推荐用于快速上手的三个扩展的套件，包含 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`)                                              | 基于 LLDB 的原生调试器，适用于 C/C++ 和 Rust 代码。                         |
| **[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> → 使用当前活动的构建任务进行编译
  * <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> 开始调试

> 💡 **提示**：这些配置文件是项目专用的。你需要针对每个工作区调整上面的示例。
