Les profils de lancement dans Visual Studio 2022
Publié le 17/04/2024
Par  Christophe MOMMER

Il n’est pas rare, quand on travaille sur des projets d’envergure, d’avoir plusieurs applications exécutables qui forment un tout. Sans avoir besoin de développer une sphère de micro-services, où le lancement de plusieurs d’entre eux pourrait être nécessaire, une simple application Blazor avec son API associé nécessite le lancement de deux applications par Visual Studio.

Et qu’en est-il d’une application où plusieurs front-end seraient disponible ? Par exemple : une API pour le back, suivie d’une application WPF, d’une application MAUI pour la mobilité et d’une application Blazor pour le web ?

Comme souvent, l'option est disponible en cochant la case qui va bien dans les options :

On arrive sur la fonctionnalité des profils de lancement. Introduite dans les versions preview de Visual Studio 2022, la nouvelle fenêtre qui s’affiche quand on fait un clic droit sur la solution puis « Properties » est celle-ci :

On peut remarquer assez rapidement que le « Multiple startup projects » s’est enrichi de nouveaux éléments, avec la possibilité de créer un profil, de le dupliquer, le supprimer ou encore le renommer. Cela nous permet donc de créer des profils différents en fonction de ce qu’on souhaite tester, par exemple : « API + Blazor » ou encore « API + MAUI » :

J’en vois déjà arriver : « mais ce n’est pas justement ce que nous promet .NET Aspire, d’avoir un seul projet de lancement pour les gérer tous ? ». Et moi de vous répondre qu’Aspire concerne les projets web. Donc oui, si votre solution est 100% web, peut-être qu’Aspire est la solution qu’il vous faut. Mais là, avec du MAUI dans l’histoire, ce n’est pas le cas.

Lorsque l’on coche la cache « Share Profile » en bas de la fenêtre (qui doit être cochée et/ou décochée pour chaque profil de la liste), on obtient un fichier JSON (qui reprend le nom de la solution avec l’extension .slnLaunch) qu’on peut ajouter au contrôle de code source pour partager avec notre équipe : 

[
  {
    "Name": "API \u002B Blazor",
    "Projects": [
      {
        "Path": "WebApi\\WebApi.csproj",
        "Action": "Start",
        "DebugTarget": "https"
      },
      {
        "Path": "BlazorApp1\\BlazorApp1.csproj",
        "Action": "Start",
        "DebugTarget": "https"
      }
    ]
  },
  {
    "Name": "API \u002B MAUI",
    "Projects": [
      {
        "Path": "WebApi\\WebApi.csproj",
        "Action": "Start",
        "DebugTarget": "https"
      },
      {
        "Path": "MauiApp1\\MauiApp1.csproj",
        "Action": "Start",
        "DebugTarget": "Windows Machine"
      }
    ]
  }
]

Changement bienvenu à mon avis pour les projets d’envergure qui permettra d’éviter de tout le temps changer les projets de démarrage lorsque l’on travaille avec plusieurs type de projet sur une solution d'envergure, ce qui évitera également les duplications des fichiers solution pour gérer les cas.