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

> Guía de configuración para el desarrollo con C#, .NET Core, .NET Framework (Mono) y C++ en Devin Desktop mediante herramientas de código abierto como OmniSharp, clangd y LLDB.

<div id="devin-desktop-development-environment-setup-guide">
  # Guía de Setup del Environment de desarrollo de escritorio de Devin
</div>

<div id="overview">
  ## Descripción general
</div>

Los espacios de trabajo de Devin Desktop dependen **exclusivamente de herramientas de código abierto** para la compilación, el linting y la depuración. Los componentes propietarios de Visual Studio de Microsoft no pueden redistribuirse, por lo que, en su lugar, integramos servidores de lenguaje, depuradores y compiladores mantenidos por la comunidad.

Esta guía cubre dos stacks:

1. **.NET / C#** – compatibles tanto con .NET Core como con .NET Framework (a través de Mono)
2. **C / C++** – con herramientas basadas en clang

Puedes instalar uno o ambos en el mismo espacio de trabajo.

> ⚠️ **Importante**: Los ejemplos a continuación son plantillas que debes personalizar para tu proyecto específico. Tendrás que editar rutas de archivos, nombres de proyectos y comandos de compilación para que coincidan con tu base de código.

***

<div id="1-net-c-development">
  ## 1. Desarrollo en .NET / C\#
</div>

> **Elige la opción que mejor se adapte a tu base de código.**

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

**Extensiones:**

* **[C#](https://marketplace.windsurf.com/vscode/item?itemName=muhammad-sammy.csharp)** (`muhammad-sammy.csharp`) – incluye **OmniSharp LS** y **NetCoreDbg**, para que puedas pulsar <kbd>F5</kbd> de inmediato

* **[.NET Install Tool](https://marketplace.windsurf.com/vscode/item?itemName=ms-dotnettools.vscode-dotnet-runtime)** (`ms-dotnettools.vscode-dotnet-runtime`) – instala automáticamente los runtimes/SDK que falten

* **[Solution Explorer](https://marketplace.windsurf.com/vscode/item?itemName=fernandoescolar.vscode-solution-explorer)** (`fernandoescolar.vscode-solution-explorer`) – permite navegar y gestionar soluciones y proyectos de .NET

**Depurador:** No hace falta nada más: la extensión ya incluye el servidor del lenguaje y un depurador de código abierto compatible con .NET Core.

**Compilación:** `dotnet build`

<div id="net-framework-via-mono">
  ### .NET Framework mediante Mono
</div>

**Extensiones:**

* **[Mono Debug](https://marketplace.windsurf.com/vscode/item?itemName=chrisatwindsurf.mono-debug)** (`chrisatwindsurf.mono-debug`) – adaptador de depuración para 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`) para funciones del lenguaje

**Depurador:** **También debes instalar la cadena de herramientas de Mono dentro del espacio de trabajo.** Sigue la guía de instalación en el [repo de Mono](https://gitlab.winehq.org/mono/mono#compilation-and-installation). La extensión del depurador se conecta a ese runtime al depurar.

> **⚠️ Configuración de .NET Framework**: Después de instalar Mono, para usar la extensión de C# con proyectos de .NET Framework, debes cambiar una configuración específica en los Settings del IDE. Ve a **Settings** (en la sección de la extensión de C#) y desactiva **"Omnisharp: Use Modern Net"**. Esta configuración usa la compilación de OmniSharp para .NET 6, que ofrece mejoras significativas de rendimiento para proyectos Framework de estilo SDK, .NET Core y .NET 5+. Ten en cuenta que esta versión *no* es compatible con proyectos de .NET Framework que no sean de estilo SDK, incluido Unity.

**Compilación:** `mcs Program.cs`

<div id="configure-tasksjson-for-your-project">
  ### Configura `tasks.json` para tu proyecto
</div>

**Debes crear o editar `.vscode/tasks.json` en la raíz de tu espacio de trabajo** y personalizar estas plantillas:

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

<div id="configure-launchjson-for-debugging">
  ### Configura `launch.json` para la depuración
</div>

**Debes crear o editar `.vscode/launch.json` en la raíz de tu espacio de trabajo** y actualizar las rutas:

```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", // ← Edita esta ruta
      "cwd": "${workspaceFolder}",
      "args": [] // Agrega argumentos de línea de comandos si es necesario
    },
    {
      "name": "Mono Launch",
      "type": "mono",
      "request": "launch",
      "preLaunchTask": "build-mono",
      "program": "${workspaceFolder}/YourProgram.exe", // ← Edita esta ruta
      "cwd": "${workspaceFolder}"
    }
  ]
}
```

<div id="cli-equivalents">
  ### Equivalentes en la 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">
  ### Limitaciones de .NET Framework
</div>

⚠️ **Importante**: Las bases de código de .NET Framework con ensamblados mixtos (C++/CLI) o dependencias complejas de Visual Studio tienen limitaciones significativas en Devin Desktop. Estas bases de código suelen requerir el sistema de compilación propietario de Visual Studio y no pueden compilarse ni depurarse por completo en Devin Desktop debido a la dependencia de herramientas específicas de Microsoft y a la resolución de referencias de ensamblados.

**Enfoques recomendados para proyectos de .NET Framework:**

* Usar Devin Desktop junto con Visual Studio para la generación y edición de código
* Migrar las partes compatibles a .NET Core cuando sea posible

***

<div id="2-c-c-development">
  ## 2. Desarrollo de C / C++
</div>

**Extensiones requeridas:**

| Extensión                                                                                                        | Propósito                                                                                                                                                    |
| ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **[Windsurf C++ Tools](https://open-vsx.org/extension/Codeium/windsurf-cpptools)** (`Codeium.windsurf-cpptools`) | Este es un paquete con las tres extensiones que recomendamos para empezar. Incluye compatibilidad con LSP para C/C++, depuración y compatibilidad con CMake. |

> **Nota:** Al instalar el paquete Windsurf C++ Tools, se instalarán automáticamente las extensiones individuales que se enumeran a continuación, así que solo necesitas instalar el paquete.

| Extensión                                                                                                                                           | Propósito                                                                                                                            |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **[clangd](https://marketplace.windsurf.com/vscode/item?itemName=llvm-vs-code-extensions.vscode-clangd)** (`llvm-vs-code-extensions.vscode-clangd`) | Integración con el servidor de lenguaje **clangd**. Si falta `clangd`, se ofrecerá descargar el binario correcto para tu plataforma. |
| **[CodeLLDB](https://marketplace.windsurf.com/extension/vadimcn/vscode-lldb)** (`vadimcn.vscode-lldb`)                                              | Depurador nativo basado en LLDB para código C/C++ y Rust.                                                                            |
| **[CMake Tools](https://marketplace.windsurf.com/vscode/item?itemName=ms-vscode.cmake-tools)** (`ms-vscode.cmake-tools`)                            | Integración de configuración del proyecto, compilación, pruebas y depuración para proyectos basados en **CMake**.                    |

En workflows que no usan CMake, igualmente puedes invocar `make`, `ninja`, etc. mediante objetivos personalizados en `tasks.json`.

<div id="configure-cc-build-tasks">
  ### Configurar tareas de compilación de C/C++
</div>

**Crea o edita `.vscode/tasks.json`** para tu proyecto de C/C++:

```jsonc theme={null}
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build-cpp",
      "type": "shell",
      "command": "clang++",
      "args": ["-g", "main.cpp", "-o", "main"], // ← Edita según tus archivos
      "group": "build",
      "problemMatcher": "$gcc"
    }
  ]
}
```

***

<div id="3-notes-gotchas">
  ## 3. Notas y advertencias
</div>

* **Solo código abierto** – rechaza cualquier solicitud para instalar herramientas propietarias de Microsoft; los contenedores de Devin Desktop no pueden incluirlas.
* **Contenedor vs. host** – los SDKs y compiladores deben estar presentes **dentro** del contenedor del espacio de trabajo de Devin Desktop.
* **Atajos de teclado**
  * <kbd>Ctrl/⌘ + Shift + B</kbd> → compilar con la tarea de compilación activa
  * <kbd>F5</kbd> → depurar con la configuración de `launch.json` seleccionada

***

<div id="4-setup-checklist">
  ## 4. Lista de verificación de configuración
</div>

* Instala las extensiones necesarias para tu stack tecnológico
* **Crea y personaliza** `.vscode/tasks.json` con los comandos de compilación de tu proyecto
* **Crea y personaliza** `.vscode/launch.json` con las rutas correctas a tus ejecutables
* Para Mono: instala el entorno de ejecución y verifica `mono --version`
* Actualiza las rutas de archivo, los nombres de los proyectos y los argumentos de compilación para que coincidan con tu base de código
* Prueba tu configuración: pulsa <kbd>Ctrl/⌘ + Shift + B</kbd> para compilar y luego <kbd>F5</kbd> para depurar

> 💡 **Consejo**: Los archivos de configuración son específicos de cada proyecto. Tendrás que adaptar los ejemplos anteriores para cada espacio de trabajo.
