> ## 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 și CPP

> Ghid de configurare pentru dezvoltarea în C#, .NET Core, .NET Framework (Mono) și C++ cu Windsurf, folosind instrumente open source precum OmniSharp, clangd și LLDB.

<div id="windsurf-development-environment-setup-guide">
  # Ghid de configurare a mediului de dezvoltare în Windsurf
</div>

<div id="overview">
  ## Prezentare generală
</div>

workspace-urile Windsurf se bazează **exclusiv pe instrumente open‑source** pentru compilare, linting și depanare. Componentele proprietare Visual Studio de la Microsoft nu pot fi redistribuite, astfel că integrăm în schimb servere de limbaj, depanatoare și compilatoare întreținute de comunitate.

Acest ghid acoperă două stack‑uri:

1. **.NET / C#** – vizând atât .NET Core, cât și .NET Framework (prin Mono)
2. **C / C++** – folosind tooling bazat pe clang

Poți instala oricare dintre ele sau pe ambele în același workspace.

> ⚠️ **Important**: Exemplele de mai jos sunt șabloane pe care trebuie să le personalizezi pentru proiectul tău. Va trebui să editezi căile de fișiere, numele proiectelor și comenzile de build pentru a se potrivi cu baza ta de cod.

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

> **Alegeți varianta care corespunde codului vostru.**

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

**Extensii:**

* **[C#](https://marketplace.windsurf.com/vscode/item?itemName=muhammad-sammy.csharp)** (`muhammad-sammy.csharp`) – include pachetele **OmniSharp LS** și **NetCoreDbg**, astfel încât poți apăsa <kbd>F5</kbd> imediat

* **[.NET Install Tool](https://marketplace.windsurf.com/vscode/item?itemName=ms-dotnettools.vscode-dotnet-runtime)** (`ms-dotnettools.vscode-dotnet-runtime`) – instalează automat runtime-urile/SDK-urile lipsă

* **[Solution Explorer](https://marketplace.windsurf.com/vscode/item?itemName=fernandoescolar.vscode-solution-explorer)** (`fernandoescolar.vscode-solution-explorer`) – navighează și gestionează soluțiile și proiectele .NET

**Depanator:** Nu este necesar nimic în plus — extensia conține deja serverul de limbaj și un depanator open‑source potrivit pentru .NET Core.

**Build:** `dotnet build`

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

**Extensii:**

* **[Mono Debug](https://marketplace.windsurf.com/vscode/item?itemName=chrisatwindsurf.mono-debug)** (`chrisatwindsurf.mono-debug`) – adaptor de depanare pentru 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`) pentru funcționalități de limbaj

**Depanator:** **Trebuie să instalați și lanțul de unelte Mono în workspace.** Urmați ghidul de instalare din [repo-ul Mono](https://gitlab.winehq.org/mono/mono#compilation-and-installation). Extensia de depanare se conectează la acel runtime în timpul depanării.

> **⚠️ Configurare .NET Framework**: După instalarea Mono, pentru a utiliza extensia C# cu proiecte .NET Framework, trebuie să modificați o setare specifică în IDE Settings. Accesați **Settings** (în secțiunea C# Extension) și dezactivați **„OmniSharp: Use Modern Net”**. Această setare folosește build-ul OmniSharp pentru .NET 6, care oferă îmbunătățiri semnificative de performanță pentru proiectele de tip SDK‑style Framework, .NET Core și .NET 5+. Rețineți că această versiune *nu* acceptă proiectele .NET Framework non‑SDK‑style, inclusiv Unity.

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

<div id="configure-tasksjson-for-your-project">
  ### Configurați `tasks.json` pentru proiectul dvs.
</div>

**Trebuie să creați sau să editați `.vscode/tasks.json` în rădăcina workspace‑ului** și să personalizați aceste șabloane:

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

<div id="configure-launchjson-for-debugging">
  ### Configurați `launch.json` pentru depanare
</div>

**Trebuie să creați sau să editați fișierul `.vscode/launch.json` din directorul rădăcină al workspace-ului** și să actualizați căile:

```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", // ← Modificați această cale
      "cwd": "${workspaceFolder}",
      "args": [] // Add command line arguments if needed
    },
    {
      "name": "Mono Launch",
      "type": "mono",
      "request": "launch",
      "preLaunchTask": "build-mono",
      "program": "${workspaceFolder}/YourProgram.exe", // ← Edit this path
      "cwd": "${workspaceFolder}"
    }
  ]
}
```

<div id="cli-equivalents">
  ### Echivalente în linia de comandă
</div>

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

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

<div id="net-framework-limitations">
  ### Limitări .NET Framework
</div>

⚠️ **Important**: Bazele de cod .NET Framework cu assembly-uri mixte (C++/CLI) sau cu dependențe complexe de Visual Studio au limitări semnificative în Windsurf. Aceste baze de cod necesită de obicei sistemul de build proprietar al Visual Studio și nu pot fi compilate sau depanate complet în Windsurf din cauza dependențelor de instrumente specifice Microsoft și de mecanismul de rezolvare a referințelor de assembly.

**Abordări recomandate pentru proiectele .NET Framework:**

* Utilizați Windsurf împreună cu Visual Studio pentru generarea și editarea codului
* Migrați părțile compatibile la .NET Core acolo unde este posibil

***

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

**Extensii necesare:**

| Extensie                                                                                                         | Scop                                                                                                                                     |
| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **[Windsurf C++ Tools](https://open-vsx.org/extension/Codeium/windsurf-cpptools)** (`Codeium.windsurf-cpptools`) | Un pachet cu cele trei extensii recomandate pentru a începe. Include suport LSP pentru C/C++, suport de depanare și suport pentru CMake. |

> **Notă:** Instalarea pachetului Windsurf C++ Tools va instala automat extensiile individuale listate mai jos, așadar trebuie doar să instalați pachetul.

| Extensie                                                                                                                                            | Scop                                                                                                                                      |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **[clangd](https://marketplace.windsurf.com/vscode/item?itemName=llvm-vs-code-extensions.vscode-clangd)** (`llvm-vs-code-extensions.vscode-clangd`) | Integrare cu serverul de limbaj **clangd**. Dacă `clangd` lipsește, vi se va propune descărcarea binarului potrivit pentru platforma dvs. |
| **[CodeLLDB](https://marketplace.windsurf.com/extension/vadimcn/vscode-lldb)** (`vadimcn.vscode-lldb`)                                              | Depanator nativ bazat pe LLDB pentru cod C/C++ și Rust.                                                                                   |
| **[CMake Tools](https://marketplace.windsurf.com/vscode/item?itemName=ms-vscode.cmake-tools)** (`ms-vscode.cmake-tools`)                            | Integrare pentru configurarea proiectului, build, testare și depanare pentru proiecte bazate pe **CMake**.                                |

Pentru fluxuri de lucru non‑CMake, puteți în continuare rula `make`, `ninja` etc. prin ținte personalizate în `tasks.json`.

<div id="configure-cc-build-tasks">
  ### Configurați sarcinile de build pentru C/C++
</div>

**Creați sau editați fișierul `.vscode/tasks.json`** pentru proiectul dvs. C/C++:

```jsonc theme={null}
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build-cpp",
      "type": "shell",
      "command": "clang++",
      "args": ["-g", "main.cpp", "-o", "main"], // ← Modifică pentru fișierele tale
      "group": "build",
      "problemMatcher": "$gcc"
    }
  ]
}
```

***

<div id="3-notes-gotchas">
  ## 3. Note și atenționări
</div>

* **Doar open‑source** – refuzați orice solicitare de a instala instrumente Microsoft proprietare; containerele Windsurf nu le pot include.
* **Container vs gazdă** – SDK‑urile și compilatoarele trebuie să fie prezente **în interiorul** containerului workspace‑ului Windsurf.
* **Combinații de taste**
  * <kbd>Ctrl/⌘ + Shift + B</kbd> → compilare folosind taskul de build activ
  * <kbd>F5</kbd> → depanare folosind configurația `launch.json` selectată

***

<div id="4-setup-checklist">
  ## 4. Listă de verificare pentru configurare
</div>

* Instalează extensiile necesare pentru stackul tău de limbaj
* **Creează și personalizează** `.vscode/tasks.json` cu comenzile de build ale proiectului tău
* **Creează și personalizează** `.vscode/launch.json` cu căile corecte către executabilele tale
* Pentru Mono: instalează runtime-ul și verifică `mono --version`
* Actualizează căile fișierelor, numele proiectelor și argumentele de build astfel încât să corespundă codului tău
* Testează configurarea: apasă <kbd>Ctrl/⌘ + Shift + B</kbd> pentru a face build, apoi <kbd>F5</kbd> pentru a depana

> 💡 **Sfat**: Fișierele de configurare sunt specifice proiectului. Va trebui să adaptezi exemplele de mai sus pentru fiecare workspace.
