Organiser votre projet pour prendre en charge .NET Framework et .NET

Vous pouvez créer une solution qui se compile parallèlement pour .NET Framework et .NET. Cet article décrit plusieurs options d’organisation de projet pour vous aider à atteindre cet objectif. Voici quelques scénarios classiques à prendre en compte quand vous devez décider comment configurer la disposition de votre projet avec .NET. La liste peut ne pas couvrir tout ce que vous voulez.

  • Combiner des projets existants et des projets .NET en un seul projet

    Avantages :

    • Simplifie votre processus de génération en compilant un seul projet au lieu de plusieurs, chacun ciblant une version de .NET Framework ou une plateforme différente.
    • Simplifie la gestion des fichiers sources pour les projets multiciblés, car vous devez gérer un seul fichier projet. Lors de l’ajout ou de la suppression de fichiers sources, les alternatives vous obligent à synchroniser manuellement ces fichiers avec vos autres projets.
    • Générez facilement un package NuGet à consommer.
    • Vous permet d’écrire du code pour une version spécifique de .NET Framework à l’aide de directives du compilateur.

    Inconvénient :

  • Séparer tous les projets

    Avantages :

    • Prend en charge le développement sur des projets existants pour les développeurs et les contributeurs qui n’ont peut-être pas Visual Studio 2019 ou une version ultérieure.
    • Réduit le risque de création de bogues dans des projets existants car aucune évolution du code n’est nécessaire dans ces projets.

Prenons cet exemple de référentiel GitHub. La figure ci-dessous montre comment ce référentiel est organisé  :

Existing project structure diagram

Les sections suivantes décrivent plusieurs façons d’ajouter la prise en charge de .NET en fonction de l’exemple de référentiel.

Remplacer des projets existants par un projet .NET multiciblé

Réorganisez le référentiel de sorte que tous les fichiers *.csproj existants soient supprimés et qu’un seul fichier *.csproj ciblant plusieurs frameworks soit créé. Il s’agit d’une excellente option, car un seul projet peut être compilé pour différents frameworks. Elle permet également de gérer différentes options de compilation et dépendances par framework ciblé.

project that targets multiple frameworks diagram

Pour obtenir un exemple de code, consultez GitHub.

Les modifications à noter sont :

  • Remplacement de packages.config et de *.csproj par un nouveau .NET *.csproj. Les packages NuGet sont spécifiés avec <PackageReference> ItemGroup.

Conserver des projets existants et créer un projet .NET

Si des projets existants ciblent des frameworks plus anciens, vous pouvez laisser ces projets inchangés et utiliser un projet .NET pour cibler les futurs frameworks.

.NET project with existing projects in a different folder diagram

Pour obtenir un exemple de code, consultez GitHub.

Le projet .NET et les projets existants sont conservés dans des dossiers distincts. Conserver les projets dans des dossiers distincts vous évite de devoir disposer de Visual Studio 2019 ou d’une version ultérieure. Vous pouvez créer une solution distincte qui ouvre seulement les anciens projets.

Voir aussi