Créer une extension Visual Studio simple en .NET 9

Visual Studio permet de créer des extensions personnalisées qui enrichissent l’environnement de développement. Grâce au support de .NET 9, il est désormais possible de développer des extensions modernes, performantes et ciblées. Cet article propose un guide pour créer une extension simple qui ajoute une commande personnalisée dans le menu « Outils ».

🛠️ Prérequis

  • Visual Studio 2022+ (version récente avec charge de travail "Extension development")
  • SDK .NET 9+ installé
  • Extension Visual Studio SDK

🧱 Étape 1 – Créer un projet d’extension

  1. Lancer Visual Studio > Nouveau projet > Rechercher « VSIX »
  2. Choisir Projet VSIX (extensibilité Visual Studio)
  3. Nom du projet : MonExtensionNet9
  4. Ciblez .NET 9 si le template le permet ou ajustez ensuite

🧩 Étape 2 – Ajouter une commande simple

Après création, ajoutez un nouvel élément :

Clic droit sur le projet > Ajouter > Nouvel élément > Commande personnalisée

Cela génère 2 fichiers :

  • MyCommand.cs : logique de la commande
  • MyCommandPackage.cs : initialisation

Extrait :

protected override async Task InitializeAsync(...) {
    await MyCommand.InitializeAsync(this);
}

Et dans MyCommand.cs :

private async Task ExecuteAsync(...) {
    await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
    VsShellUtilities.ShowMessageBox(
        this.package,
        "Extension déclenchée !",
        "MonExtension",
        OLEMSGICON.OLEMSGICON_INFO,
        OLEMSGBUTTON.OLEMSGBUTTON_OK,
        OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST);
}

🧪 Étape 3 – Tester l’extension

  • Définir le projet VSIX comme projet de démarrage
  • Appuyer sur F5 : cela lance une instance expérimentale de Visual Studio
  • Menu « Outils » > votre commande s’affiche et fonctionne

🧼 Étape 4 – Améliorations possibles

  • Ajouter des raccourcis clavier
  • Ajouter un bouton dans une barre d’outils
  • Créer une UI WinForms/WPF pour interagir avec l’utilisateur
  • Accéder à l’éditeur de texte ou à la solution courante

Exemple : accéder à l’éditeur de texte actif

var dte = (DTE)Package.GetGlobalService(typeof(DTE));
var document = dte?.ActiveDocument;
var text = document?.Object("TextDocument") as TextDocument;
var selection = text?. Selection;
string selectedText = selection?.Text;

Exemple : accéder à la solution ouverte

var dte = (DTE)Package.GetGlobalService(typeof(DTE));
string solutionPath = dte?.Solution?.FullName;

📦 Déploiement

Une fois l’extension testée :

  • Le build génère un fichier .vsix
  • Ce fichier peut être installé ou publié dans la Visual Studio Marketplace

✅ Conclusion

Créer une extension Visual Studio en .NET 9 est simple et puissant. Cela permet d’automatiser des tâches, personnaliser l’environnement de travail, ou partager des outils internes. Avec quelques lignes de code, vous pouvez transformer votre IDE en un assistant personnalisé. Si votre idée est bonne vous pouvez peut-être même la partager, gratuitement, ou en faire un business, après tout des extensions comme Resharper ont un jour commencé comme cela...

Stay Tuned !