Vue d’ensemble de la publication d’applications .NET

Les applications que vous créez avec .NET peuvent être publiées dans deux modes différents, et le mode affecte la façon dont un utilisateur exécute votre application.

La publication de votre application en tant que contenu autonome produit une application qui comprend le Runtime .net et les bibliothèques, ainsi que votre application et ses dépendances. Les utilisateurs de l’application peuvent l’exécuter sur un ordinateur sur lequel le runtime .NET n’est pas installé.

La publication de votre application en tant que dépendant du Framework produit une application qui comprend uniquement votre application et ses dépendances. Les utilisateurs de l’application doivent installer séparément le Runtime .NET.

Les deux modes de publication produisent un fichier exécutable propre à la plateforme par défaut. Les applications dépendantes du Framework peuvent être créées sans exécutable, et ces applications sont multiplateformes.

Quand un fichier exécutable est généré, vous pouvez spécifier la plateforme cible avec un identificateur de Runtime (RID). Pour plus d’informations sur les RID, consultez catalogue RID .net.

Le tableau suivant présente les commandes utilisées pour publier une application comme étant dépendante de l’infrastructure ou autonome, par version du kit de développement logiciel (SDK) :

Type SDK 2.1 SDK 3,1 SDK 5,0 SDK 6,0 Commande
exécutable dépendant du Framework pour la plateforme actuelle. ✔️ ✔️ ✔️ dotnet publish
exécutable dépendant du Framework pour une plateforme spécifique. ✔️ ✔️ ✔️ dotnet publish -r <RID> --self-contained false
binaire multiplateforme dépendant du Framework. ✔️ ✔️ ✔️ ✔️ dotnet publish
exécutable autonome. ✔️ ✔️ ✔️ ✔️ dotnet publish -r <RID>

Pour plus d’informations, consultez .net dotnet Publish Command.

Produire un exécutable

Les exécutables ne sont pas multiplateformes. Elles sont spécifiques à un système d’exploitation et à une architecture de processeur. Lors de la publication de votre application et de la création d’un exécutable, vous pouvez publier l’application comme étant autonome ou dépendantede l’infrastructure. La publication d’une application comme autonome comprend le Runtime .NET avec l’application, et les utilisateurs de l’application n’ont pas à se soucier de l’installation de .NET avant l’exécution de l’application. Les applications publiées comme dépendantes du Framework n’incluent pas le runtime et les bibliothèques .NET ; seule l’application et les dépendances tierces sont incluses.

Les commandes suivantes produisent un exécutable :

Type SDK 2.1 SDK 3,1 SDK 5,0 SDK 6,0 Commande
exécutable dépendant du Framework pour la plateforme actuelle. ✔️ ✔️ ✔️ dotnet publish
exécutable dépendant du Framework pour une plateforme spécifique. ✔️ ✔️ ✔️ dotnet publish -r <RID> --self-contained false
exécutable autonome. ✔️ ✔️ ✔️ ✔️ dotnet publish -r <RID>

Produire un binaire multiplateforme

Les binaires multiplateforme sont créés lorsque vous publiez votre application comme étant dépendante du Framework, sous la forme d’un fichier dll . Le fichier dll est nommé d’après votre projet. Par exemple, si vous avez une application nommée word_reader, un fichier nommé word_reader.dll est créé. Les applications publiées de cette manière sont exécutées avec la dotnet <filename.dll> commande et peuvent être exécutées sur n’importe quelle plateforme.

Les binaires multiplateforme peuvent être exécutés sur n’importe quel système d’exploitation tant que le Runtime .NET ciblé est déjà installé. Si le Runtime .NET ciblé n’est pas installé, l’application peut s’exécuter à l’aide d’un Runtime plus récent si l’application est configurée pour la restauration par progression. Pour plus d’informations, consultez restauration par progression des applications dépendantes du Framework.

La commande suivante génère un binaire multiplateforme :

Type SDK 2.1 SDK 3. x SDK 5,0 SDK 6,0 Commande
binaire multiplateforme dépendant du Framework. ✔️ ✔️ ✔️ ✔️ dotnet publish

Publier le Framework dépendant du Framework

Les applications publiées comme dépendantes du Framework sont inter-plateformes et n’incluent pas le Runtime .NET. L’utilisateur de votre application est requis pour installer le Runtime .NET.

La publication d’une application en tant que dépendant du Framework produit un fichier binaire multiplateforme en tant que fichier dll et un exécutable spécifique à la plateforme qui cible votre plateforme actuelle. La dll est multiplateforme, contrairement à l’exécutable. par exemple, si vous publiez une application nommée word_reader et Windows cible, un exécutable word_reader.exe est créé avec word_reader.dll. Quand vous ciblez Linux ou macOS, un exécutable word_reader est créé avec word_reader.dll. Pour plus d’informations sur les RID, consultez catalogue RID .net.

Important

Le kit de développement logiciel (SDK) .NET 2,1 ne génère pas d’exécutables spécifiques à la plateforme lorsque vous publiez une application dépendant du Framework.

Le binaire multiplateforme de votre application peut être exécuté à l’aide de la dotnet <filename.dll> commande et peut être exécuté sur n’importe quelle plateforme. si l’application utilise un package NuGet qui a des implémentations spécifiques à la plateforme, toutes les dépendances de plateformes sont copiées dans le dossier de publication avec l’application.

Vous pouvez créer un exécutable pour une plateforme spécifique en passant les -r <RID> --self-contained false paramètres à la dotnet publish commande. Lorsque le -r paramètre est omis, un fichier exécutable est créé pour votre plateforme actuelle. tout NuGet packages ayant des dépendances spécifiques à la plateforme pour la plateforme ciblée sont copiés dans le dossier de publication. Si vous n’avez pas besoin d’un exécutable spécifique à la plateforme, vous pouvez spécifier <UseAppHost>False</UseAppHost> dans le fichier projet. pour plus d’informations, consultez MSBuild de référence pour les projets SDK .net.

Avantages

  • Déploiement de petite taille
    Seule votre application et ses dépendances sont distribuées. Le runtime et les bibliothèques .NET sont installés par l’utilisateur et toutes les applications partagent le Runtime.

  • Multiplateforme
    Votre application et les autres. La bibliothèque basée sur le réseau s’exécute sur d’autres systèmes d’exploitation. Vous n’avez pas besoin de définir une plateforme cible pour votre application. Pour plus d’informations sur le format de fichier .NET, consultez format de fichier d’assembly .net.

  • Utilise le dernier Runtime corrigé
    L’application utilise le runtime le plus récent (au sein de la famille principale secondaire de .NET) installé sur le système cible. Cela signifie que votre application utilise automatiquement la dernière version corrigée du Runtime .NET. Ce comportement par défaut peut être substitué. Pour plus d’informations, consultez restauration par progression des applications dépendantes du Framework.

Inconvénients

  • Nécessite la préinstallation du Runtime
    Votre application peut s’exécuter uniquement si la version de .NET que votre application cible est déjà installée sur le système hôte. Vous pouvez configurer le comportement de restauration par progression pour que l’application nécessite une version spécifique de .NET ou autorise une version plus récente de .NET. Pour plus d’informations, consultez restauration par progression des applications dépendantes du Framework.

  • .NET peut changer
    Il est possible que le runtime et les bibliothèques .NET soient mis à jour sur l’ordinateur sur lequel l’application est exécutée. Dans de rares cas, cela peut modifier le comportement de votre application si vous utilisez les bibliothèques .NET, que la plupart des applications utilisent. Vous pouvez configurer la façon dont votre application utilise les versions plus récentes de .NET. Pour plus d’informations, consultez restauration par progression des applications dépendantes du Framework.

L’inconvénient suivant s’applique uniquement au kit de développement logiciel (SDK) .NET Core 2,1.

  • Utilisez la dotnet commande pour démarrer l’application
    Les utilisateurs doivent exécuter la dotnet <filename.dll> commande pour démarrer votre application. Le kit de développement logiciel (SDK) .NET Core 2,1 ne génère pas d’exécutables spécifiques à la plateforme pour les applications qui dépendent de l’infrastructure.

Exemples

Publiez une application qui dépend de l’infrastructure multiplateforme. Un fichier exécutable qui cible votre plateforme actuelle est créé avec le fichier dll .

dotnet publish

Publiez une application qui dépend de l’infrastructure multiplateforme. Un fichier exécutable Linux 64 bits est créé avec le fichier dll . Cette commande ne fonctionne pas avec kit SDK .NET Core 2,1.

dotnet publish -r linux-x64 --self-contained false

Publication autonome

La publication de votre application en tant que contenu autonome produit un fichier exécutable spécifique à la plateforme. Le dossier de publication de sortie contient tous les composants de l’application, y compris les bibliothèques .NET et le runtime cible. L’application est isolée des autres applications .NET et n’utilise pas un runtime partagé installé localement. L’utilisateur de votre application n’est pas obligé de télécharger et d’installer .NET.

Le binaire exécutable est généré pour la plateforme cible spécifiée. par exemple, si vous avez une application nommée word_readeret que vous publiez un fichier exécutable autonome pour Windows, un fichier word_reader.exe est créé. La publication pour Linux ou macOS, un fichier de word_reader est créé. La plateforme et l’architecture cibles sont spécifiées avec le -r <RID> paramètre de la dotnet publish commande. Pour plus d’informations sur les RID, consultez catalogue RID .net.

si l’application possède des dépendances spécifiques à la plateforme, telles qu’un package NuGet contenant des dépendances spécifiques à la plateforme, celles-ci sont copiées dans le dossier de publication avec l’application.

Avantages

  • Contrôler la version .NET
    Vous contrôlez la version de .NET qui est déployée avec votre application.

  • Ciblage spécifique à la plateforme
    Étant donné que vous devez publier votre application pour chaque plateforme, vous savez où votre application s’exécutera. Si .NET introduit une nouvelle plateforme, les utilisateurs ne peuvent pas exécuter votre application sur cette plateforme tant que vous n’avez pas publié une version ciblant cette plateforme. Vous pouvez tester votre application pour résoudre les problèmes de compatibilité avant que vos utilisateurs exécutent votre application sur la nouvelle plateforme.

Inconvénients

  • Déploiements plus importants
    Étant donné que votre application comprend le Runtime .NET et toutes les dépendances de votre application, la taille du téléchargement et l’espace disque requis sont supérieurs à une version dépendante du Framework .

    Conseil

    Vous pouvez réduire la taille de votre déploiement sur les systèmes Linux d’environ 28 Mo en utilisant le mode de globalisation invariant de la globalisation.net. Cela force votre application à traiter toutes les cultures comme la culture dite indifférente.

    Conseil

    La suppression de l' il peut réduire la taille de votre déploiement.

  • Plus difficile de mettre à jour la version .NET
    Le Runtime .NET (distribué avec votre application) peut uniquement être mis à niveau en publiant une nouvelle version de votre application. Toutefois, .NET met à jour les correctifs de sécurité critiques en fonction des besoins de la bibliothèque d’infrastructure sur l’ordinateur sur lequel votre application s’exécute. Vous êtes responsable de la validation de bout en bout pour ce scénario de correctif de sécurité.

Exemples

Publiez une application autonome. Un fichier exécutable macOS 64 bits est créé.

dotnet publish -r osx-x64

Publiez une application autonome. un fichier exécutable 64 bits Windows est créé.

dotnet publish -r win-x64

Publier avec des images ReadyToRun

La publication avec des images ReadyToRun améliore le temps de démarrage de votre application au prix de l’augmentation de la taille de votre application. Pour publier avec ReadyToRun, consultez ReadyToRun pour plus d’informations.

Avantages

  • Amélioration du temps de démarrage
    L’application passera moins de temps à exécuter le JIT.

Inconvénients

  • Taille supérieure
    L’application sera plus volumineuse sur le disque.

Exemples

Publiez une application autonome et ReadyToRun. Un fichier exécutable macOS 64 bits est créé.

dotnet publish -c Release -r osx-x64 -p:PublishReadyToRun=true

Publiez une application autonome et ReadyToRun. un fichier exécutable 64 bits Windows est créé.

dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true

Voir aussi