> ## Documentation Index
> Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# C#, .NET und CPP

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

<div id="windsurf-development-environment-setup-guide">
  # Leitfaden zur Einrichtung der Windsurf-Entwicklungsumgebung
</div>

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

Windsurf-Workspaces setzen **ausschließlich auf Open‑Source‑Tooling** für das Kompilieren, Linting und Debuggen. Microsofts proprietäre Visual-Studio‑Komponenten dürfen nicht weitergegeben werden; daher integrieren wir stattdessen von der Community gepflegte Language Server, Debugger und Compiler.

Dieser Leitfaden umfasst zwei Stacks:

1. **.NET / C#** – Zielumgebungen sind sowohl .NET Core als auch .NET Framework (über Mono)
2. **C / C++** – mit clang‑basiertem Tooling

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

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

***

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

> **Wählen Sie die Variante, die zu Ihrem Codebase 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 mit <kbd>F5</kbd> starten können

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

* **[Solution Explorer](https://marketplace.windsurf.com/vscode/item?itemName=fernandoescolar.vscode-solution-explorer)** (`fernandoescolar.vscode-solution-explorer`) – .NET-Lösungen und -Projekte navigieren und verwalten

**Debugger:** Es ist nichts Weiteres erforderlich — die Erweiterung enthält bereits den Language Server 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 Sprachfunktionen

**Debugger:** **Sie müssen die Mono-Toolchain ebenfalls im Workspace installieren.** Folgen Sie der Installationsanleitung im [Mono‑Repository](https://gitlab.winehq.org/mono/mono#compilation-and-installation). Die Debugger-Erweiterung verbindet sich zur Debug-Zeit mit dieser Runtime.

> **⚠️ .NET-Framework-Konfiguration**: Nachdem Sie Mono installiert haben, müssen Sie, um die C#-Erweiterung mit .NET‑Framework‑Projekten zu verwenden, eine bestimmte Einstellung in den IDE‑Einstellungen umschalten. 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 Projekte im SDK‑Stil, .NET Core und .NET 5+ bietet. Beachten Sie, dass diese Version *keine* .NET‑Framework‑Projekte im Nicht‑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 Stammverzeichnis Ihres Workspace 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"], // ← Hier bearbeiten
      "group": "build",
      "problemMatcher": "$msCompile"
    },
    {
      "label": "build-mono",
      "type": "shell",
      "command": "mcs",
      "args": ["YourProgram.cs"], // ← Hier bearbeiten
      "group": "build"
    }
  ]
}
```

<div id="configure-launchjson-for-debugging">
  ### Konfiguriere `launch.json` zum Debuggen
</div>

**Du musst `.vscode/launch.json` im Stammverzeichnis deines Workspaces erstellen bzw. 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", // ← Pfad anpassen
      "cwd": "${workspaceFolder}",
      "args": [] // Bei Bedarf Befehlszeilenargumente hinzufügen
    },
    {
      "name": "Mono Launch",
      "type": "mono",
      "request": "launch",
      "preLaunchTask": "build-mono",
      "program": "${workspaceFolder}/YourProgram.exe", // ← Pfad anpassen
      "cwd": "${workspaceFolder}"
    }
  ]
}
```

<div id="cli-equivalents">
  ### CLI-Äquivalente
</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 des .NET Frameworks
</div>

⚠️ **Wichtig**: .NET-Framework-Codebasen mit gemischten Assemblies (C++/CLI) oder komplexen Visual-Studio-Abhängigkeiten sind in Windsurf erheblich eingeschränkt. Diese Codebasen erfordern in der Regel das proprietäre Build-System von Visual Studio und können in Windsurf aufgrund der Abhängigkeit von Microsoft-spezifischem Tooling und der Auflösung von Assembly-Referenzen nicht vollständig kompiliert oder debuggt werden.

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

* Verwenden Sie Windsurf parallel zu Visual Studio für Codegenerierung und -bearbeitung
* Migrieren Sie kompatible Teile nach Möglichkeit zu .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`) | Ein Bundle der drei Erweiterungen, die wir für den Einstieg empfehlen. Enthält C/C++‑LSP‑Unterstützung, Debugging‑Unterstützung und CMake‑Unterstützung. |

> **Hinweis:** Durch die Installation des Bundles Windsurf C++ Tools werden die unten aufgeführten einzelnen Erweiterungen automatisch mitinstalliert. Es genügt, das Bundle zu 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 **clangd**‑Language Servers. Wenn `clangd` fehlt, wird angeboten, die passende Binärdatei für Ihre Plattform herunterzuladen. |
| **[CodeLLDB](https://marketplace.windsurf.com/extension/vadimcn/vscode-lldb)** (`vadimcn.vscode-lldb`)                                              | Nativer Debugger auf Basis von LLDB für C/C++ und Rust.                                                                                       |
| **[CMake Tools](https://marketplace.windsurf.com/vscode/item?itemName=ms-vscode.cmake-tools)** (`ms-vscode.cmake-tools`)                            | Projektkonfiguration sowie Build‑, Test‑ und Debug‑Integration für **CMake**‑basierte Projekte.                                               |

Für Workflows ohne CMake können Sie weiterhin `make`, `ninja` usw. über benutzerdefinierte `tasks.json`‑Ziele aufrufen.

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

**Erstellen oder bearbeiten Sie `.vscode/tasks.json`** 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 & Stolperfallen
</div>

* **Nur Open‑Source** – Lehnen Sie sämtliche Aufforderungen ab, proprietäre Microsoft‑Tools zu installieren; Windsurf‑Container dürfen diese nicht enthalten.
* **Container vs Host** – SDKs/Compiler müssen **im** Windsurf‑Workspace‑Container vorhanden sein.
* **Tastenkürzel**
  * <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. Einrichtungs-Checkliste
</div>

* Installieren Sie die erforderlichen Erweiterungen für Ihren Sprach‑Stack
* **Erstellen und passen Sie** `.vscode/tasks.json` **an** mit den Build-Befehlen Ihres Projekts
* **Erstellen und passen Sie** `.vscode/launch.json` **an** mit korrekten Pfaden zu Ihren ausführbaren Dateien
* Für Mono: Runtime installieren und mit `mono --version` verifizieren
* Aktualisieren Sie Dateipfade, Projektnamen und Build-Argumente, damit sie zu Ihrer Codebasis passen
* Testen Sie Ihre Einrichtung: Drücken Sie <kbd>Ctrl/⌘ + Shift + B</kbd> zum Erstellen, dann <kbd>F5</kbd> zum Debuggen

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