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

> Guia de configuração para desenvolvimento com C#, .NET Core, .NET Framework (Mono) e C++ no Devin Desktop, usando ferramentas de código aberto como OmniSharp, clangd e LLDB.

<div id="devin-desktop-development-environment-setup-guide">
  # Guia de configuração do ambiente de desenvolvimento no Devin Desktop
</div>

<div id="overview">
  ## Visão geral
</div>

Os workspaces do Devin Desktop dependem **exclusivamente de ferramentas open source** para compilação, linting e depuração. Os componentes proprietários do Visual Studio da Microsoft não podem ser redistribuídos, por isso integramos servidores de linguagem, depuradores e compiladores mantidos pela comunidade.

Este guia aborda duas stacks:

1. **.NET / C#** – com suporte a .NET Core e .NET Framework (via Mono)
2. **C / C++** – usando ferramentas baseadas em clang

Você pode instalar uma ou ambas no mesmo workspace.

> ⚠️ **Importante**: Os exemplos abaixo são templates que você precisa personalizar para seu projeto específico. Será necessário editar caminhos de arquivos, nomes de projetos e comandos de build para corresponder à sua base de código.

***

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

> **Escolha a opção que corresponde à sua base de código.**

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

**Extensões:**

* **[C#](https://marketplace.windsurf.com/vscode/item?itemName=muhammad-sammy.csharp)** (`muhammad-sammy.csharp`) – inclui **OmniSharp LS** e **NetCoreDbg**, para que você possa usar <kbd>F5</kbd> imediatamente

* **[.NET Install Tool](https://marketplace.windsurf.com/vscode/item?itemName=ms-dotnettools.vscode-dotnet-runtime)** (`ms-dotnettools.vscode-dotnet-runtime`) – instala automaticamente runtimes/SDKs ausentes

* **[Solution Explorer](https://marketplace.windsurf.com/vscode/item?itemName=fernandoescolar.vscode-solution-explorer)** (`fernandoescolar.vscode-solution-explorer`) – permite navegar e gerenciar soluções e projetos .NET

**Depurador:** Não é necessário mais nada — a extensão já inclui o servidor de linguagem e um depurador de código aberto adequado para .NET Core.

**Build:** `dotnet build`

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

**Extensões:**

* **[Mono Debug](https://marketplace.windsurf.com/vscode/item?itemName=chrisatwindsurf.mono-debug)** (`chrisatwindsurf.mono-debug`) – adaptador de depuração 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 recursos de linguagem

**Depurador:** **Você também precisa instalar a toolchain do Mono dentro do workspace.** Siga o guia de instalação no [repositório do Mono](https://gitlab.winehq.org/mono/mono#compilation-and-installation). A extensão de depuração se conecta a esse runtime durante a depuração.

> **⚠️ Configuração do .NET Framework**: Após instalar o Mono, para usar a extensão C# com projetos .NET Framework, você precisa desativar uma configuração específica nas Configurações da IDE. Vá para **Configurações** (na seção da extensão C#) e desative **"Omnisharp: Use Modern Net"**. Essa configuração usa a build do OmniSharp para .NET 6, que oferece melhorias significativas de desempenho para projetos .NET Framework no estilo SDK, .NET Core e .NET 5+. Observe que esta versão *não* oferece suporte a projetos .NET Framework que não usam o estilo SDK, incluindo Unity.

**Build:** `mcs Program.cs`

<div id="configure-tasksjson-for-your-project">
  ### Configure `tasks.json` para seu projeto
</div>

**Você deve criar/editar `.vscode/tasks.json` na raiz do seu workspace** e personalizar os templates a seguir:

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

<div id="configure-launchjson-for-debugging">
  ### Configure o `launch.json` para depuração
</div>

**Você deve criar/editar `.vscode/launch.json` na raiz do workspace** e atualizar os caminhos:

```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", // ← Edite este caminho
      "cwd": "${workspaceFolder}",
      "args": [] // Adicione argumentos de linha de comando se necessário
    },
    {
      "name": "Mono Launch",
      "type": "mono",
      "request": "launch",
      "preLaunchTask": "build-mono",
      "program": "${workspaceFolder}/YourProgram.exe", // ← Edite este caminho
      "cwd": "${workspaceFolder}"
    }
  ]
}
```

<div id="cli-equivalents">
  ### Equivalentes na 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">
  ### Limitações do .NET Framework
</div>

⚠️ **Importante**: bases de código do .NET Framework com assemblies mistos (C++/CLI) ou dependências complexas do Visual Studio têm limitações significativas no Devin Desktop. Essas bases de código normalmente exigem o sistema de build proprietário do Visual Studio e não podem ser totalmente compiladas nem depuradas no Devin Desktop devido à dependência de ferramentas específicas da Microsoft e da resolução de referências de assembly.

**Abordagens recomendadas para projetos em .NET Framework:**

* Use o Devin Desktop em conjunto com o Visual Studio para gerar e editar código
* Migre as partes compatíveis para o .NET Core sempre que possível

***

<div id="2-c-c-development">
  ## 2. Desenvolvimento em C / C++
</div>

**Extensões obrigatórias:**

| Extensão                                                                                                         | Finalidade                                                                                                                          |
| ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **[Windsurf C++ Tools](https://open-vsx.org/extension/Codeium/windsurf-cpptools)** (`Codeium.windsurf-cpptools`) | É um pacote com as três extensões que recomendamos para começar. Ele inclui suporte a LSP para C/C++, depuração e suporte ao CMake. |

> **Nota:** Instalar o pacote Windsurf C++ Tools instalará automaticamente as extensões individuais listadas abaixo, então você só precisa instalar o pacote.

| Extensão                                                                                                                                            | Finalidade                                                                                                                                          |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **[clangd](https://marketplace.windsurf.com/vscode/item?itemName=llvm-vs-code-extensions.vscode-clangd)** (`llvm-vs-code-extensions.vscode-clangd`) | Integração com o servidor de linguagem **clangd**. Se o `clangd` estiver ausente, será oferecido o download do binário correto para sua plataforma. |
| **[CodeLLDB](https://marketplace.windsurf.com/extension/vadimcn/vscode-lldb)** (`vadimcn.vscode-lldb`)                                              | Depurador nativo baseado em LLDB para código C/C++ e Rust.                                                                                          |
| **[CMake Tools](https://marketplace.windsurf.com/vscode/item?itemName=ms-vscode.cmake-tools)** (`ms-vscode.cmake-tools`)                            | Integração de configuração do projeto, build, teste e depuração para projetos baseados em **CMake**.                                                |

Para fluxos de trabalho sem CMake, você ainda pode invocar `make`, `ninja` etc. por meio de alvos personalizados no `tasks.json`.

<div id="configure-cc-build-tasks">
  ### Configurar tarefas de build para C/C++
</div>

**Crie/edite `.vscode/tasks.json`** no seu projeto em C/C++:

```jsonc theme={null}
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build-cpp",
      "type": "shell",
      "command": "clang++",
      "args": ["-g", "main.cpp", "-o", "main"], // ← Edite conforme seus arquivos
      "group": "build",
      "problemMatcher": "$gcc"
    }
  ]
}
```

***

<div id="3-notes-gotchas">
  ## 3. Notas e pontos de atenção
</div>

* **Apenas open source** – recuse qualquer solicitação para instalar ferramentas proprietárias da Microsoft; os contêineres do Devin Desktop não podem vir com elas.
* **Contêiner vs. host** – SDKs/compiladores devem estar presentes **dentro** do contêiner do workspace do Devin Desktop.
* **Atalhos de teclado**
  * <kbd>Ctrl/⌘ + Shift + B</kbd> → compilar usando a tarefa de build ativa
  * <kbd>F5</kbd> → depurar com a configuração `launch.json` selecionada

***

<div id="4-setup-checklist">
  ## 4. Checklist de configuração
</div>

* Instale as extensões necessárias para sua stack de tecnologias
* **Crie e personalize** `.vscode/tasks.json` com os comandos de build do seu projeto
* **Crie e personalize** `.vscode/launch.json` com os caminhos corretos para seus executáveis
* Para Mono: instale o runtime e verifique `mono --version`
* Atualize os caminhos dos arquivos, os nomes dos projetos e os argumentos de build para corresponder ao seu base de código
* Teste sua configuração: pressione <kbd>Ctrl/⌘ + Shift + B</kbd> para executar o build e depois <kbd>F5</kbd> para depurar

> 💡 **Dica**: Os arquivos de configuração são específicos de cada projeto. Você precisará adaptar os exemplos acima para cada workspace.
