Supprimer les exécutables et les déploiements autonomes

Le modèle de déploiement dépendant de l’infrastructure est le modèle de déploiement le plus réussi depuis le lancement de .NET. Dans ce scénario, le développeur d’applications regroupe uniquement l’application et les assemblys tiers en supposant que les bibliothèques runtime et runtime .NET soient disponibles sur l’ordinateur client. Ce modèle de déploiement continue d’être dominant dans la dernière version de .NET, mais il existe certains scénarios où le modèle dépendant de l’infrastructure n’est pas le meilleur choix. L’alternative consiste à publier une application autonome, où les bibliothèques runtime et runtime .NET sont regroupées avec l’application et les assemblys tiers.

Le modèle de déploiement autonome de taille réduite est une version spécialisée du modèle de déploiement autonome qui est optimisée pour réduire la taille du déploiement. La réduction de la taille du déploiement est une exigence essentielle pour certains scénarios côté client, comme les applications Blazor. Selon la complexité de l’application, seul un sous-ensemble des assemblys d’infrastructure est référencé et un sous-ensemble du code au sein de chaque assembly est requis pour exécuter l’application. Les parties inutilisées des bibliothèques sont inutiles et peuvent être supprimées de l’application empaquetée.

Toutefois, il existe un risque que l’analyse au moment de la génération de l’application puisse entraîner des échecs au moment de l’exécution, du fait qu’elle ne soit pas en mesure d’analyser de manière fiable différents modèles de code problématiques (en grande partie centrés sur l’utilisation de la réflexion). Pour atténuer ces problèmes, des avertissements sont générés à chaque fois que l’outil de découpage ne peut pas analyser entièrement un modèle de code. Pour plus d’informations sur la signification des avertissements de découpage et comment les résoudre, consultez Présentation des avertissements de découpage.

Notes

  • Le découpage est entièrement pris en charge dans .NET 6 et les versions ultérieures. Dans .NET Core 3.1 et .NET 5, le découpage était une fonctionnalité expérimentale.
  • Le découpage n’est disponible que pour les applications qui sont publiées de manière autonomes.

Composants à l’origine de problèmes de découpage

Avertissement

Tous les types de projets ne peuvent pas être découpés. Pour plus d’informations, consultez Incompatibilités de découpage connues.

Tout code qui entraîne des défis d’analyse au moment de la génération n’est pas adapté au découpage. Certains modèles de codage courants qui sont problématiques lorsqu’ils sont utilisés par une application proviennent de l’utilisation de la réflexion illimitée et des dépendances externes qui ne sont pas visibles au moment de la génération. Un sérialiseur hérité, tel que la sérialisation XML, est un exemple de réflexion non illimitée, et COM intégré est un exemple de dépendances externes invisibles. Pour répondre aux avertissements de découpage dans votre application, consultez Présentation des avertissements de découpage et pour rendre votre bibliothèque compatible avec le découpage, consultez Préparer les bibliothèques .NET au découpage.

Activer le découpage

  1. Ajoutez <PublishTrimmed>true</PublishTrimmed> à votre fichier projet.

    Cette propriété génère une application découpée sur la publication autonome. Elle désactive également les fonctionnalités incompatibles avec le découpage et affiche les avertissements de compatibilité de découpage pendant la génération.

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. Publiez ensuite votre application à l’aide de la commande dotnet publish ou de Visual Studio.

Publier avec l’interface de ligne de commande

L’exemple suivant publie l’application pour Windows en tant qu’application autonome découpée.

dotnet publish -r win-x64

Le découpage n’est pris en charge que pour les applications autonomes.

<PublishTrimmed> doit être défini dans le fichier projet afin que les fonctionnalités de découpage incompatibles soient désactivées pendant dotnet build. Toutefois, vous pouvez également définir cette option comme argument sur dotnet publish :

dotnet publish -r win-x64 -p:PublishTrimmed=true

Pour plus d’informations, consultez Publier des applications .NET avec CLI .NET.

Publier avec Visual Studio

  1. Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet à publier, puis sélectionnez Publier.

    Solution Explorer with a right-click menu highlighting the Publish option.

    Si vous n’avez pas encore de profil de publication, suivez les instructions pour en créer un et choisissez le type de cible Dossier.

  2. Choisissez Autres actions>Modifier.

    Visual studio publish profile with edit button.

  3. Dans la boîte de dialogue Paramètres du profil, définissez les options suivantes :

    • Définissez Mode de déploiement sur Autonome.
    • Définissez le Runtime cible sur la plateforme sur laquelle vous souhaitez publier.
    • Sélectionnez Découper le code inutilisé.

    Choisissez Enregistrer pour enregistrer les paramètres et revenir à la boîte de dialogue Publier .

    Profile settings dialog with deployment mode, target runtime, and trim unused assemblies options highlighted.

  4. Choisissez Publier pour publier votre application découpée.

Pour plus d’informations, consultez Publier des applications Core .NET avec Visual Studio.

Publier avec Visual Studio pour Mac

Visual Studio pour Mac ne fournit pas d’options pour publier votre application. Vous devez publier manuellement en suivant les instructions de la section Publication avec CLI . Pour plus d’informations, consultez Publier des applications .NET avec CLI .NET.

Voir aussi