Skip to content

sebastiendegodez/csharp-lsp

v1.0.0Apache-2.0

C# language server (official Microsoft Roslyn LSP) for code intelligence in GitHub Copilot CLI and Claude Code

🟣 csharp-lsp

Le serveur de langage C# officiel de Microsoft, basé sur Roslyn : le même moteur que l'extension C# et C# Dev Kit de VS Code.

GitHub Copilot CLI Claude Code Agent Plugins Licence

Ce plugin branche le serveur de langage Roslyn Language Server (Microsoft) sur votre agent IA. Au lieu de deviner la structure du code par recherche textuelle, l'agent interroge le serveur comme le ferait un IDE : résultats plus précis, plus rapides et moins coûteux en contexte.

✨ Ce que votre agent sait faire avec ce plugin

CapacitéExemple de demande
🎯 Aller à la définition« Où est défini ce symbole ? »
🔎 Trouver les références« Qui appelle cette fonction ? »
✏️ Renommer un symbole« Renomme cette classe dans tout le projet »
🩺 Diagnostics« Corrige les erreurs signalées dans ce fichier »
💬 Survol (types, documentation)« Quel est le type de cette variable ? »
🗺️ Symboles du document et de l'espace de travail« Liste les classes de ce module »

Les capacités réellement disponibles dépendent de ce que le serveur implémente.

🧩 Compatibilité

AgentFichier de configuration LSPFormat
GitHub Copilot CLIcom.github.copilot/lsp.jsonAgent Plugins 1.0 (plugin.json racine)
Claude Code.lsp.jsonPlugin Claude Code (.claude-plugin/plugin.json)

Les deux fichiers décrivent le même serveur (roslyn-language-server --stdio --autoLoadProjects). Ils existent en double car les deux agents n'utilisent pas les mêmes noms de champs (fileExtensions pour Copilot, extensionToLanguage pour Claude).

📋 Prérequis

  • .NET SDK 10+

⚙️ 1. Installer le serveur de langage

Le plugin ne contient que la configuration : le serveur doit être installé sur votre machine et accessible dans le PATH.

Outil .NET global

dotnet tool install --global roslyn-language-server --prerelease

Mise à jour

dotnet tool update --global roslyn-language-server --prerelease

📦 2. Installer le plugin

GitHub Copilot CLI

copilot plugin marketplace add SebastienDegodez/copilot-instructions
copilot plugin install csharp-lsp@copilot-instructions-sebastien-degodez

Ou directement, sans passer par la marketplace :

copilot plugin install SebastienDegodez/copilot-instructions:plugins/csharp-lsp

Claude Code

/plugin marketplace add SebastienDegodez/copilot-instructions
/plugin install csharp-lsp@copilot-instructions-sebastien-degodez

✅ 3. Vérifier que tout fonctionne

Dans GitHub Copilot CLI :

/lsp list
/lsp test roslyn

Dans Claude Code : ouvrez une nouvelle session dans votre projet, puis demandez par exemple « Trouve toutes les références de maFonction ». En cas de souci, claude --debug affiche les journaux de démarrage du serveur.

🗂️ Fichiers pris en charge

ExtensionIdentifiant de langage
.cscsharp

💡 Conseils

  • Le paquet roslyn-language-server n'est publié qu'en préversion sur NuGet : l'option --prerelease est obligatoire.
  • Vérifiez que ~/.dotnet/tools est dans votre PATH.
  • L'option --autoLoadProjects est indispensable : ni Copilot CLI ni Claude Code n'ouvrent la solution comme le fait VS Code. Sans elle, le serveur ne charge aucun projet et la navigation entre fichiers ne fonctionne pas.
  • Ordre de chargement : dotnet.defaultSolution dans .vscode/settings.json, sinon l'unique .sln/.slnx à la racine, sinon tous les .csproj trouvés (500 au maximum, les dossiers test/tests étant écartés en premier).
  • Sur un gros dépôt, fixez la solution à charger avec "dotnet.defaultSolution": "src/MaSolution.slnx" dans .vscode/settings.json.
  • La télémétrie est activée par défaut ; ajoutez "--telemetryLevel", "off" dans args pour la désactiver.
  • Exécutez dotnet restore avant la première session pour que les références NuGet soient résolues.
  • Alternative communautaire : csharp-ls (dotnet tool install --global csharp-ls, commande csharp-ls sans argument), également basé sur Roslyn.

🛠️ Dépannage

SymptômeSolution
/lsp test roslyn échoue avec « command not found »Le binaire n'est pas dans le PATH : relancez l'étape 1 et ouvrez un nouveau terminal.
roslyn-language-server: command not foundAjoutez export PATH="$PATH:$HOME/.dotnet/tools" à votre profil shell.
« Aller à la définition » ne trouve rien dans les autres fichiersAucun projet n'est chargé : vérifiez la présence de --autoLoadProjects et qu'il n'y a pas plusieurs .sln à la racine sans dotnet.defaultSolution.
Références NuGet en erreurLancez dotnet restore puis redémarrez le serveur (/lsp reload dans Copilot CLI).

Pour désactiver ce serveur dans un dépôt précis (Copilot CLI), ajoutez dans .github/lsp.json :

{ "lspServers": { "roslyn": { "disabled": true } } }

📁 Structure du plugin

csharp-lsp/
├── plugin.json                      # Manifeste Agent Plugins 1.0 (Copilot CLI)
├── .claude-plugin/
│   └── plugin.json                  # Manifeste Claude Code
├── .lsp.json                        # Serveur LSP pour Claude Code
├── com.github.copilot/
│   └── lsp.json                     # Serveur LSP pour Copilot CLI
├── plugin.yaml                      # Métadonnées du site de documentation
└── README.md

🔗 Liens utiles


Auteur : Sebastien DEGODEZ · Licence : Apache 2.0