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

> Einrichtungsleitfaden für die Entwicklung mit C#, .NET Core, .NET Framework (Mono) und C++ in Devin Desktop mit Open-Source-Tools wie OmniSharp, clangd und LLDB.

<div id="devin-desktop-development-environment-setup-guide">
  # Leitfaden für das Setup der Devin-Desktop-Entwicklungsumgebung
</div>

<div id="overview">
  ## Überblick
</div>

Devin Desktop Workspaces basieren **ausschließlich auf Open-Source-Tools** zum Kompilieren, Linting und Debuggen. Die proprietären Visual-Studio-Komponenten von Microsoft können nicht weiterverteilt werden, daher integrieren wir stattdessen von der Community gepflegte Sprachserver, Debugger und Compiler.

Dieser Leitfaden behandelt zwei Stacks:

1. **.NET / C#** – für .NET Core und .NET Framework (über Mono)
2. **C / C++** – mit clang-basierten Tools

Sie können einen oder beide davon im selben Workspace installieren.

> ⚠️ **Wichtig**: Die folgenden Beispiele sind Vorlagen, die Sie für Ihr spezifisches Projekt anpassen müssen. Sie müssen Dateipfade, Projektnamen und Build-Befehle so bearbeiten, dass sie zu Ihrer Codebasis passen.

***

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

> **Wählen Sie die Variante, die zu Ihrem Code passt.**

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

**Erweiterungen:**

* **[C#](https://marketplace.windsurf.com/vscode/item?itemName=muhammad-sammy.csharp)** (`muhammad-sammy.csharp`) – bündelt **OmniSharp LS** und **NetCoreDbg**, sodass Sie sofort <kbd>F5</kbd> drücken können

* **[.NET Install Tool](https://marketplace.windsurf.com/vscode/item?itemName=ms-dotnettools.vscode-dotnet-runtime)** (`ms-dotnettools.vscode-dotnet-runtime`) – installiert fehlende Laufzeitumgebungen/SDKs automatisch

* **[Solution Explorer](https://marketplace.windsurf.com/vscode/item?itemName=fernandoescolar.vscode-solution-explorer)** (`fernandoescolar.vscode-solution-explorer`) – zum Navigieren und Verwalten von .NET-Lösungen und -Projekten

**Debugger:** Es ist nichts weiter erforderlich – die Erweiterung enthält bereits den Sprachserver und einen Open-Source-Debugger für .NET Core.

**Build:** `dotnet build`

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

**Erweiterungen:**

* **[Mono Debug](https://marketplace.windsurf.com/vscode/item?itemName=chrisatwindsurf.mono-debug)** (`chrisatwindsurf.mono-debug`) – Debug-Adapter für 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`) für Sprachfeatures

**Debugger:** **Sie müssen außerdem die Mono-Toolchain im Workspace installieren.** Folgen Sie der Installationsanleitung im [Mono Repo](https://gitlab.winehq.org/mono/mono#compilation-and-installation). Die Debugger-Erweiterung verbindet sich beim Debuggen mit dieser Runtime.

> **⚠️ .NET Framework-Konfiguration**: Nach der Installation von Mono müssen Sie, um die C#-Erweiterung mit .NET Framework-Projekten zu verwenden, eine bestimmte Einstellung in den IDE Settings umstellen. Gehen Sie zu **Settings** (im Abschnitt der C#-Erweiterung) und deaktivieren Sie **"Omnisharp: Use Modern Net"**. Diese Einstellung verwendet den OmniSharp-Build für .NET 6, der erhebliche Leistungsverbesserungen für Framework-, .NET Core- und .NET 5+-Projekte im SDK-Stil bietet. Beachten Sie, dass diese Version *keine* .NET Framework-Projekte ohne SDK-Stil unterstützt, einschließlich Unity.

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

<div id="configure-tasksjson-for-your-project">
  ### Konfigurieren Sie `tasks.json` für Ihr Projekt
</div>

**Sie müssen `.vscode/tasks.json` im Workspace-Stammverzeichnis erstellen bzw. bearbeiten** und diese Vorlagen anpassen:

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

<div id="configure-launchjson-for-debugging">
  ### `launch.json` für das Debuggen konfigurieren
</div>

**Sie müssen `.vscode/launch.json` in Ihrem Workspace-Stammverzeichnis erstellen oder bearbeiten** und die Pfade aktualisieren:

```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", // ← Diesen Pfad anpassen
      "cwd": "${workspaceFolder}",
      "args": [] // Befehlszeilenargumente bei Bedarf hinzufügen
    },
    {
      "name": "Mono Launch",
      "type": "mono",
      "request": "launch",
      "preLaunchTask": "build-mono",
      "program": "${workspaceFolder}/YourProgram.exe", // ← Diesen Pfad anpassen
      "cwd": "${workspaceFolder}"
    }
  ]
}
```

<div id="cli-equivalents">
  ### CLI-Entsprechungen
</div>

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

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

<div id="net-framework-limitations">
  ### Einschränkungen von .NET Framework
</div>

⚠️ **Wichtig**: .NET-Framework-Codebasen mit gemischten Assemblies (C++/CLI) oder komplexen Visual-Studio-Abhängigkeiten unterliegen in Devin Desktop erheblichen Einschränkungen. Diese Codebasen erfordern in der Regel das proprietäre Build-System von Visual Studio und können in Devin Desktop aufgrund der Abhängigkeit von Microsoft-spezifischen Werkzeugen und der Auflösung von Assembly-Referenzen nicht vollständig kompiliert oder debuggt werden.

**Empfohlene Vorgehensweisen für .NET-Framework-Projekte:**

* Verwenden Sie Devin Desktop zusammen mit Visual Studio für die Codegenerierung und -bearbeitung
* Migrieren Sie kompatible Teile nach Möglichkeit auf .NET Core

***

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

**Erforderliche Erweiterungen:**

| Erweiterung                                                                                                      | Zweck                                                                                                                                         |
| ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **[Windsurf C++ Tools](https://open-vsx.org/extension/Codeium/windsurf-cpptools)** (`Codeium.windsurf-cpptools`) | Dieses Paket bündelt die drei Erweiterungen, die wir für den Einstieg empfehlen. Es enthält Unterstützung für C/C++-LSP, Debugging und CMake. |

> **Hinweis:** Wenn Sie das Paket „Windsurf C++ Tools“ installieren, werden die unten aufgeführten einzelnen Erweiterungen automatisch mitinstalliert. Sie müssen also nur das Paket installieren.

| Erweiterung                                                                                                                                         | Zweck                                                                                                                                    |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **[clangd](https://marketplace.windsurf.com/vscode/item?itemName=llvm-vs-code-extensions.vscode-clangd)** (`llvm-vs-code-extensions.vscode-clangd`) | Integration des Sprachservers **clangd**. Falls `clangd` fehlt, wird der Download der passenden Binärdatei für Ihre Plattform angeboten. |
| **[CodeLLDB](https://marketplace.windsurf.com/extension/vadimcn/vscode-lldb)** (`vadimcn.vscode-lldb`)                                              | Nativer Debugger auf Basis von LLDB für C/C++- und Rust-Code.                                                                            |
| **[CMake Tools](https://marketplace.windsurf.com/vscode/item?itemName=ms-vscode.cmake-tools)** (`ms-vscode.cmake-tools`)                            | Integration von Projektkonfiguration, Build, Test und Debugging für **CMake**-basierte Projekte.                                         |

Auch in Nicht-CMake-Workflows können Sie `make`, `ninja` usw. weiterhin über benutzerdefinierte `tasks.json`-Ziele aufrufen.

<div id="configure-cc-build-tasks">
  ### C/C++-Build-Tasks konfigurieren
</div>

**`.vscode/tasks.json` erstellen/bearbeiten** für Ihr C/C++-Projekt:

```jsonc theme={null}
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build-cpp",
      "type": "shell",
      "command": "clang++",
      "args": ["-g", "main.cpp", "-o", "main"], // ← Für Ihre Dateien anpassen
      "group": "build",
      "problemMatcher": "$gcc"
    }
  ]
}
```

***

<div id="3-notes-gotchas">
  ## 3. Hinweise & Fallstricke
</div>

* **Nur Open Source** – lehne jede Aufforderung ab, proprietäre Microsoft-Tools zu installieren; Devin Desktop-Container können diese nicht mitliefern.
* **Container vs. Host** – SDKs/Compiler müssen **im** Workspace-Container von Devin Desktop vorhanden sein.
* **Tastenkombinationen**
  * <kbd>Ctrl/⌘ + Shift + B</kbd> → mit der aktiven Build-Task kompilieren
  * <kbd>F5</kbd> → mit der ausgewählten `launch.json`-Konfiguration debuggen

***

<div id="4-setup-checklist">
  ## 4. Setup-Checkliste
</div>

* Installieren Sie die erforderlichen Erweiterungen für Ihren Sprach-Stack
* **Erstellen und konfigurieren Sie** `.vscode/tasks.json` mit den Build-Befehlen Ihres Projekts
* **Erstellen und konfigurieren Sie** `.vscode/launch.json` mit den richtigen Pfaden zu Ihren ausführbaren Dateien
* Für Mono: Installieren Sie die Runtime und prüfen Sie `mono --version`
* Aktualisieren Sie Dateipfade, Projektnamen und Build-Argumente passend zu Ihrer Codebase
* Testen Sie Ihr Setup: Drücken Sie <kbd>Ctrl/⌘ + Shift + B</kbd>, um den Build auszuführen, und dann <kbd>F5</kbd> zum Debuggen

> 💡 **Tipp**: Die Konfigurationsdateien sind projektspezifisch. Sie müssen die obigen Beispiele für jeden Workspace anpassen.
