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

> Guide de configuration pour le développement en C#, .NET Core, .NET Framework (Mono) et C++ dans Devin Desktop, à l’aide d’outils open source comme OmniSharp, clangd et LLDB.

<div id="devin-desktop-development-environment-setup-guide">
  # Guide de configuration de l’environnement de développement pour Devin Desktop
</div>

<div id="overview">
  ## Vue d’ensemble
</div>

Les espaces de travail Devin Desktop reposent **exclusivement sur des outils open source** pour la compilation, le linting et le débogage. Les composants propriétaires de Microsoft Visual Studio ne peuvent pas être redistribués. Nous intégrons donc à la place des serveurs de langage, des débogueurs et des compilateurs maintenus par la communauté.

Ce guide couvre deux stacks :

1. **.NET / C#** – avec prise en charge de .NET Core et de .NET Framework (via Mono)
2. **C / C++** – avec des outils basés sur clang

Vous pouvez installer l’une, l’autre ou les deux dans le même espace de travail.

> ⚠️ **Important** : Les exemples ci-dessous sont des modèles que vous devez adapter à votre projet spécifique. Vous devrez modifier les chemins de fichiers, les noms de projet et les commandes de build pour qu’ils correspondent à votre base de code.

***

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

> **Choisissez l’option qui correspond à votre base de code.**

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

**Extensions :**

* **[C#](https://marketplace.windsurf.com/vscode/item?itemName=muhammad-sammy.csharp)** (`muhammad-sammy.csharp`) – inclut **OmniSharp LS** et **NetCoreDbg**, pour que vous puissiez appuyer sur <kbd>F5</kbd> immédiatement

* **[.NET Install Tool](https://marketplace.windsurf.com/vscode/item?itemName=ms-dotnettools.vscode-dotnet-runtime)** (`ms-dotnettools.vscode-dotnet-runtime`) – installe automatiquement les environnements d’exécution/SDK manquants

* **[Solution Explorer](https://marketplace.windsurf.com/vscode/item?itemName=fernandoescolar.vscode-solution-explorer)** (`fernandoescolar.vscode-solution-explorer`) – parcourir et gérer les solutions et projets .NET

**Débogueur :** Rien d’autre n’est requis — l’extension contient déjà le serveur de langage et un débogueur open source adapté à .NET Core.

**Build :** `dotnet build`

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

**Extensions :**

* **[Mono Debug](https://marketplace.windsurf.com/vscode/item?itemName=chrisatwindsurf.mono-debug)** (`chrisatwindsurf.mono-debug`) – adaptateur de débogage pour 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`) pour les fonctionnalités du langage

**Débogueur :** **Vous devez également installer la chaîne d’outils Mono dans l’espace de travail.** Suivez le guide d’installation dans le [dépôt Mono](https://gitlab.winehq.org/mono/mono#compilation-and-installation). L’extension de débogage se connecte à cet environnement d’exécution lors du débogage.

> **⚠️ Configuration de .NET Framework** : Après avoir installé Mono, pour utiliser l’extension C# avec des projets .NET Framework, vous devez désactiver un paramètre spécifique dans les Settings de l’IDE. Accédez à **Settings** (dans la section C# Extension) et désactivez **"Omnisharp: Use Modern Net"**. Ce paramètre utilise la build OmniSharp pour .NET 6, qui offre d’importants gains de performances pour les projets .NET Framework de type SDK, .NET Core et .NET 5+. Notez que cette version *ne* prend *pas* en charge les projets .NET Framework qui ne sont pas de type SDK, y compris Unity.

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

<div id="configure-tasksjson-for-your-project">
  ### Configurer `tasks.json` pour votre projet
</div>

**Vous devez créer ou modifier `.vscode/tasks.json` à la racine de votre espace de travail** et personnaliser ces modèles :

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

<div id="configure-launchjson-for-debugging">
  ### Configurer `launch.json` pour le débogage
</div>

**Vous devez créer ou modifier `.vscode/launch.json` à la racine de votre espace de travail** et mettre à jour les chemins :

```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", // ← Modifiez ce chemin
      "cwd": "${workspaceFolder}",
      "args": [] // Ajoutez des arguments de ligne de commande si nécessaire
    },
    {
      "name": "Mono Launch",
      "type": "mono",
      "request": "launch",
      "preLaunchTask": "build-mono",
      "program": "${workspaceFolder}/YourProgram.exe", // ← Modifiez ce chemin
      "cwd": "${workspaceFolder}"
    }
  ]
}
```

<div id="cli-equivalents">
  ### Équivalents en ligne de commande
</div>

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

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

<div id="net-framework-limitations">
  ### Limitations de .NET Framework
</div>

⚠️ **Important** : les bases de code .NET Framework avec des assemblies mixtes (C++/CLI) ou des dépendances complexes à Visual Studio présentent d’importantes limitations dans Devin Desktop. Ces bases de code nécessitent généralement le système de build propriétaire de Visual Studio et ne peuvent pas être entièrement compilées ni déboguées dans Devin Desktop en raison de leur dépendance à des outils spécifiques à Microsoft et à la résolution des références d’assembly.

**Approches recommandées pour les projets .NET Framework :**

* Utiliser Devin Desktop en complément de Visual Studio pour la génération et l’édition de code
* Migrer les parties compatibles vers .NET Core lorsque possible

***

<div id="2-c-c-development">
  ## 2. Développement C / C++
</div>

**Extensions requises :**

| Extension                                                                                                        | Objectif                                                                                                                                                                               |
| ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **[Windsurf C++ Tools](https://open-vsx.org/extension/Codeium/windsurf-cpptools)** (`Codeium.windsurf-cpptools`) | Il s’agit d’un bundle regroupant les trois extensions que nous vous recommandons d’utiliser pour démarrer. Ce package inclut la prise en charge du LSP C/C++, du débogage et de CMake. |

> **Remarque :** L’installation du bundle Windsurf C++ Tools installe automatiquement les extensions individuelles listées ci-dessous ; il vous suffit donc d’installer le bundle.

| Extension                                                                                                                                           | Objectif                                                                                                                                         |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| **[clangd](https://marketplace.windsurf.com/vscode/item?itemName=llvm-vs-code-extensions.vscode-clangd)** (`llvm-vs-code-extensions.vscode-clangd`) | Intégration du serveur de langage **clangd**. Si `clangd` est absent, l’extension proposera de télécharger le binaire adapté à votre plateforme. |
| **[CodeLLDB](https://marketplace.windsurf.com/extension/vadimcn/vscode-lldb)** (`vadimcn.vscode-lldb`)                                              | Débogueur natif basé sur LLDB pour le code C/C++ et Rust.                                                                                        |
| **[CMake Tools](https://marketplace.windsurf.com/vscode/item?itemName=ms-vscode.cmake-tools)** (`ms-vscode.cmake-tools`)                            | Intégration de la configuration du projet, du build, des tests et du débogage pour les projets basés sur **CMake**.                              |

Pour les workflows non basés sur CMake, vous pouvez quand même invoquer `make`, `ninja`, etc. via des cibles `tasks.json` personnalisées.

<div id="configure-cc-build-tasks">
  ### Configurer les tâches de build C/C++
</div>

**Créez ou modifiez `.vscode/tasks.json`** pour votre projet C/C++ :

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

***

<div id="3-notes-gotchas">
  ## 3. Remarques et pièges à éviter
</div>

* **Open source uniquement** – rejetez toute demande d’installation d’outils Microsoft propriétaires ; les conteneurs Devin Desktop ne peuvent pas les embarquer.
* **Conteneur vs hôte** – les SDK/compilateurs doivent être présents **dans** le conteneur d’espace de travail Devin Desktop.
* **Raccourcis clavier**
  * <kbd>Ctrl/⌘ + Shift + B</kbd> → compiler à l’aide de la tâche de build active
  * <kbd>F5</kbd> → déboguer à l’aide de la configuration `launch.json` sélectionnée

***

<div id="4-setup-checklist">
  ## 4. Checklist de configuration
</div>

* Installez les extensions requises pour votre stack technique
* **Créez et personnalisez** `.vscode/tasks.json` avec les commandes de build de votre projet
* **Créez et personnalisez** `.vscode/launch.json` avec les chemins d’accès corrects vers vos exécutables
* Pour Mono : installez l’environnement d’exécution et vérifiez `mono --version`
* Mettez à jour les chemins de fichiers, les noms de projet et les arguments de build pour qu’ils correspondent à votre base de code
* Testez votre configuration : appuyez sur <kbd>Ctrl/⌘ + Shift + B</kbd> pour lancer le build, puis sur <kbd>F5</kbd> pour déboguer

> 💡 **Conseil** : Les fichiers de configuration sont propres à chaque projet. Vous devrez adapter les exemples ci-dessus pour chaque espace de travail.
