Vue d’ensemble de la publication d’applications .NET Core.NET Core application publishing overview

Les applications que vous créez avec .NET Core peuvent être publiées dans deux modes différents, et le mode affecte la façon dont un utilisateur exécute votre application.Applications you create with .NET Core can be published in two different modes, and the mode affects how a user runs your app.

La publication de votre application en tant que contenu autonome produit une application qui comprend le runtime et les bibliothèques .net Core, ainsi que votre application et ses dépendances.Publishing your app as self-contained produces an application that includes the .NET Core runtime and libraries, and your application and its dependencies. Les utilisateurs de l’application peuvent l’exécuter sur un ordinateur sur lequel le Runtime .NET Core n’est pas installé.Users of the application can run it on a machine that doesn't have the .NET Core runtime installed.

La publication de votre application en tant que dépendant du Framework produit une application qui comprend uniquement votre application et ses dépendances.Publishing your app as framework-dependent produces an application that includes only your application itself and its dependencies. Les utilisateurs de l’application doivent installer séparément le Runtime .NET Core.Users of the application have to separately install the .NET Core runtime.

Les deux modes de publication produisent un fichier exécutable propre à la plateforme par défaut.Both publishing modes produce a platform-specific executable by default. Les applications dépendantes du Framework peuvent être créées sans exécutable, et ces applications sont multiplateformes.Framework-dependent applications can be created without an executable, and these applications are cross-platform.

Quand un fichier exécutable est généré, vous pouvez spécifier la plateforme cible avec un identificateur de Runtime (RID).When an executable is produced, you can specify the target platform with a runtime identifier (RID). Pour plus d’informations sur les RID, consultez catalogue RID .net Core.For more information about RIDs, see .NET Core RID Catalog.

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) :The following table outlines the commands used to publish an app as framework-dependent or self-contained, per SDK version:

TypeType SDK 2.1SDK 2.1 SDK 3. xSDK 3.x CommandeCommand
exécutable dépendant du Framework pour la plateforme actuelle.framework-dependent executable for the current platform. ✔️✔️ dotnet publish
exécutable dépendant du Framework pour une plateforme spécifique.framework-dependent executable for a specific platform. ✔️✔️ dotnet publish -r <RID> --self-contained false
binaire multiplateforme dépendant du Framework.framework-dependent cross-platform binary. ✔️✔️ ✔️✔️ dotnet publish
exécutable autonome.self-contained executable. ✔️✔️ ✔️✔️ dotnet publish -r <RID>

Pour plus d’informations, consultez dotnet Publish commande .net Core.For more information, see .NET Core dotnet publish command.

Produire un exécutableProduce an executable

Les exécutables ne sont pas multiplateformes.Executables aren't cross-platform. Elles sont spécifiques à un système d’exploitation et à une architecture de processeur.They're specific to an operating system and CPU architecture. 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.When publishing your app and creating an executable, you can publish the app as self-contained or framework-dependent. La publication d’une application comme autonome comprend le Runtime .NET Core avec l’application, et les utilisateurs de l’application n’ont pas à se soucier de l’installation de .NET Core avant d’exécuter l’application.Publishing an app as self-contained includes the .NET Core runtime with the app, and users of the app don't have to worry about installing .NET Core before running the app. Les applications publiées comme dépendantes du Framework n’incluent pas le runtime et les bibliothèques .NET Core ; seule l’application et les dépendances tierces sont incluses.Apps published as framework-dependent don't include the .NET Core runtime and libraries; only the app and 3rd-party dependencies are included.

Les commandes suivantes produisent un exécutable :The following commands produce an executable:

TypeType SDK 2.1SDK 2.1 SDK 3. xSDK 3.x CommandeCommand
exécutable dépendant du Framework pour la plateforme actuelle.framework-dependent executable for the current platform. ✔️✔️ dotnet publish
exécutable dépendant du Framework pour une plateforme spécifique.framework-dependent executable for a specific platform. ✔️✔️ dotnet publish -r <RID> --self-contained false
exécutable autonome.self-contained executable. ✔️✔️ ✔️✔️ dotnet publish -r <RID>

Produire un binaire multiplateformeProduce a cross-platform binary

Les binaires multiplateforme sont créés lorsque vous publiez votre application comme étant dépendante du Framework, sous la forme d’un fichier dll .Cross-platform binaries are created when you publish your app as framework-dependent, in the form of a dll file. Le fichier dll est nommé d’après votre projet.The dll file is named after your project. Par exemple, si vous avez une application nommée word_reader, un fichier nommé word_reader.dll est créé.For example, if you have an app named word_reader, a file named word_reader.dll is created. 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.Apps published in this way are run with the dotnet <filename.dll> command and can be run on any platform.

Les binaires multiplateforme peuvent être exécutés sur n’importe quel système d’exploitation tant que le Runtime .NET Core ciblé est déjà installé.Cross-platform binaries can be run on any operating system as long as the targeted .NET Core runtime is already installed. Si le Runtime .NET Core 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 effectuer une restauration par progression.If the targeted .NET Core runtime isn't installed, the app may run using a newer runtime if the app is configured to roll-forward. Pour plus d’informations, consultez restauration par progression des applications dépendantes du Framework.For more information, see framework-dependent apps roll forward.

La commande suivante génère un binaire multiplateforme :The following command produces a cross-platform binary:

TypeType SDK 2.1SDK 2.1 SDK 3. xSDK 3.x CommandeCommand
binaire multiplateforme dépendant du Framework.framework-dependent cross-platform binary. ✔️✔️ ✔️✔️ dotnet publish

Publier le Framework dépendant du FrameworkPublish framework-dependent

Les applications publiées comme dépendantes du Framework sont inter-plateformes et n’incluent pas le Runtime .NET Core.Apps published as framework-dependent are cross-platform and don't include the .NET Core runtime. L’utilisateur de votre application est tenu d’installer le Runtime .NET Core.The user of your app is required to install the .NET Core runtime.

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.Publishing an app as framework-dependent produces a cross-platform binary as a dll file, and a platform-specific executable that targets your current platform. La dll est multiplateforme, contrairement à l’exécutable.The dll is cross-platform while the executable isn't. 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.For example, if you publish an app named word_reader and target Windows, a word_reader.exe executable is created along with word_reader.dll. Quand vous ciblez Linux ou macOS, un exécutable word_reader est créé avec word_reader.dll.When targeting Linux or macOS, a word_reader executable is created along with word_reader.dll. Pour plus d’informations sur les RID, consultez catalogue RID .net Core.For more information about RIDs, see .NET Core RID Catalog.

Important

Kit SDK .NET Core 2,1 ne génère pas d’exécutables spécifiques à la plateforme lorsque vous publiez une application qui dépend de l’infrastructure..NET Core SDK 2.1 doesn't produce platform-specific executables when you publish an app framework-dependent.

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.The cross-platform binary of your app can be run with the dotnet <filename.dll> command, and can be run on any platform. 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.If the app uses a NuGet package that has platform-specific implementations, all platforms' dependencies are copied to the publish folder along with the app.

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.You can create an executable for a specific platform by passing the -r <RID> --self-contained false parameters to the dotnet publish command. Lorsque le -r paramètre est omis, un fichier exécutable est créé pour votre plateforme actuelle.When the -r parameter is omitted, an executable is created for your current platform. Tous les packages NuGet qui ont des dépendances spécifiques à la plateforme pour la plateforme ciblée sont copiés dans le dossier de publication.Any NuGet packages that have platform-specific dependencies for the targeted platform are copied to the publish folder.

AvantagesAdvantages

  • Déploiement de petite tailleSmall deployment
    Seule votre application et ses dépendances sont distribuées.Only your app and its dependencies are distributed. Le runtime et les bibliothèques .NET Core sont installés par l’utilisateur et toutes les applications partagent le Runtime.The .NET Core runtime and libraries are installed by the user and all apps share the runtime.

  • MultiplateformeCross-platform
    Votre application et les autres. La bibliothèque basée sur le réseau s’exécute sur d’autres systèmes d’exploitation.Your app and any .NET-based library runs on other operating systems. Vous n’avez pas besoin de définir une plateforme cible pour votre application.You don't need to define a target platform for your app. Pour plus d’informations sur le format de fichier .NET, consultez format de fichier d’assembly .net.For information about the .NET file format, see .NET Assembly File Format.

  • Utilise le dernier Runtime corrigéUses the latest patched runtime
    L’application utilise le runtime le plus récent (au sein de la famille principale de .NET Core ciblée) installé sur le système cible.The app uses the latest runtime (within the targeted major-minor family of .NET Core) installed on the target system. Cela signifie que votre application utilise automatiquement la dernière version corrigée du Runtime .NET Core.This means your app automatically uses the latest patched version of the .NET Core runtime. Ce comportement par défaut peut être substitué.This default behavior can be overridden. Pour plus d’informations, consultez restauration par progression des applications dépendantes du Framework.For more information, see framework-dependent apps roll forward.

InconvénientsDisadvantages

  • Nécessite la préinstallation du RuntimeRequires pre-installing the runtime
    Votre application peut s’exécuter uniquement si la version de .NET Core ciblée par votre application est déjà installée sur le système hôte.Your app can run only if the version of .NET Core your app targets is already installed on the host system. Vous pouvez configurer le comportement de restauration par progression pour que l’application nécessite une version spécifique de .NET Core ou autorise une version plus récente de .NET Core.You can configure roll-forward behavior for the app to either require a specific version of .NET Core or allow a newer version of .NET Core. Pour plus d’informations, consultez restauration par progression des applications dépendantes du Framework.For more information, see framework-dependent apps roll forward.

  • .NET Core peut changer.NET Core may change
    Il est possible que le runtime et les bibliothèques .NET Core soient mis à jour sur l’ordinateur sur lequel l’application est exécutée.It's possible for the .NET Core runtime and libraries to be updated on the machine where the app is run. Dans de rares cas, cela peut modifier le comportement de votre application si vous utilisez les bibliothèques .NET Core, lesquelles font la plupart des applications.In rare cases, this may change the behavior of your app if you use the .NET Core libraries, which most apps do. Vous pouvez configurer la façon dont votre application utilise les versions plus récentes de .NET Core.You can configure how your app uses newer versions of .NET Core. Pour plus d’informations, consultez restauration par progression des applications dépendantes du Framework.For more information, see framework-dependent apps roll forward.

L’inconvénient suivant s’applique uniquement au kit de développement logiciel (SDK) .NET Core 2,1.The following disadvantage only applies to .NET Core 2.1 SDK.

  • Utilisez la dotnet commande pour démarrer l’applicationUse the dotnet command to start the app
    Les utilisateurs doivent exécuter la dotnet <filename.dll> commande pour démarrer votre application.Users must run the dotnet <filename.dll> command to start your app. 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..NET Core 2.1 SDK doesn't produce platform-specific executables for apps published framework-dependent.

ExemplesExamples

Publiez une application qui dépend de l’infrastructure multiplateforme.Publish an app cross-platform framework-dependent. Un fichier exécutable qui cible votre plateforme actuelle est créé avec le fichier dll .An executable that targets your current platform is created along with the dll file.

dotnet publish

Publiez une application qui dépend de l’infrastructure multiplateforme.Publish an app cross-platform framework-dependent. Un fichier exécutable Linux 64 bits est créé avec le fichier dll .A Linux 64-bit executable is created along with the dll file. Cette commande ne fonctionne pas avec kit SDK .NET Core 2,1.This command doesn't work with .NET Core SDK 2.1.

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

Publication autonomePublish self-contained

La publication de votre application en tant que contenu autonome produit un fichier exécutable spécifique à la plateforme.Publishing your app as self-contained produces a platform-specific executable. Le dossier de publication de sortie contient tous les composants de l’application, y compris les bibliothèques .NET Core et le runtime cible.The output publishing folder contains all components of the app, including the .NET Core libraries and target runtime. L’application est isolée des autres applications .NET Core et n’utilise pas un runtime partagé installé localement.The app is isolated from other .NET Core apps and doesn't use a locally installed shared runtime. L’utilisateur de votre application n’est pas obligé de télécharger et d’installer .NET Core.The user of your app isn't required to download and install .NET Core.

Le binaire exécutable est généré pour la plateforme cible spécifiée.The executable binary is produced for the specified target platform. Par exemple, si vous avez une application nommée word_readeret que vous publiez un exécutable autonome pour Windows, un fichier word_reader.exe est créé.For example, if you have an app named word_reader, and you publish a self-contained executable for Windows, a word_reader.exe file is created. La publication pour Linux ou macOS, un fichier de word_reader est créé.Publishing for Linux or macOS, a word_reader file is created. La plateforme et l’architecture cibles sont spécifiées avec le -r <RID> paramètre de la dotnet publish commande.The target platform and architecture is specified with the -r <RID> parameter for the dotnet publish command. Pour plus d’informations sur les RID, consultez catalogue RID .net Core.For more information about RIDs, see .NET Core RID Catalog.

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.If the app has platform-specific dependencies, such as a NuGet package containing platform-specific dependencies, these are copied to the publish folder along with the app.

AvantagesAdvantages

  • Contrôler la version de .NET CoreControl .NET Core version
    Vous contrôlez la version de .NET Core qui est déployée avec votre application.You control which version of .NET Core is deployed with your app.

  • Ciblage spécifique à la plateformePlatform-specific targeting
    Étant donné que vous devez publier votre application pour chaque plateforme, vous savez où votre application s’exécutera.Because you have to publish your app for each platform, you know where your app will run. Si .NET Core 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.If .NET Core introduces a new platform, users can't run your app on that platform until you release a version targeting that platform. 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.You can test your app for compatibility problems before your users run your app on the new platform.

InconvénientsDisadvantages

  • Déploiements plus importantsLarger deployments
    Étant donné que votre application comprend le Runtime .NET Core et toutes les dépendances de votre application, la taille du téléchargement et l’espace disque requis sont supérieurs à ceux d’une version dépendante du Framework .Because your app includes the .NET Core runtime and all of your app dependencies, the download size and hard drive space required is greater than a framework-dependent version.

    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 de la globalisation.net core.You can reduce the size of your deployment on Linux systems by approximately 28 MB by using .NET Core globalization invariant mode. Cela force votre application à traiter toutes les cultures comme la culture dite indifférente.This forces your app to treat all cultures like the invariant culture.

    Conseil

    Il existe une fonctionnalité de découpage de la version préliminaire qui peut réduire encore davantage la taille de votre déploiement.There is a preview Trim feature that can further reduce the size of your deployment.

  • Plus difficile à mettre à jour la version .NET CoreHarder to update the .NET Core version
    Le Runtime .NET Core (distribué avec votre application) peut uniquement être mis à niveau en publiant une nouvelle version de votre application..NET Core Runtime (distributed with your app) can only be upgraded by releasing a new version of your app. Toutefois, .NET Core 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.However, .NET Core will update critical security patches as needed for the framework library in the machine that your app runs on. Vous êtes responsable de la validation de bout en bout pour ce scénario de correctif de sécurité.You are responsible for end to end validation for this security patch scenario.

ExemplesExamples

Publiez une application autonome.Publish an app self-contained. Un fichier exécutable macOS 64 bits est créé.A macOS 64-bit executable is created.

dotnet publish -r osx-x64

Publiez une application autonome.Publish an app self-contained. Un fichier exécutable Windows 64 bits est créé.A Windows 64-bit executable is created.

dotnet publish -r win-x64

Publier avec des images ReadyToRunPublish with ReadyToRun images

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.Publishing with ReadyToRun images will improve the startup time of your application at the cost of increasing the size of your application. Pour publier avec ReadyToRun, consultez ReadyToRun pour plus d’informations.In order to publish with ReadyToRun see ReadyToRun for more details.

AvantagesAdvantages

  • Amélioration du temps de démarrageImproved startup time
    L’application passera moins de temps à exécuter le JIT.The application will spend less time running the JIT.

InconvénientsDisadvantages

  • Taille supérieureLarger size
    L’application sera plus volumineuse sur le disque.The application will be larger on disk.

ExemplesExamples

Publiez une application autonome et ReadyToRun.Publish an app self-contained and ReadyToRun. Un fichier exécutable macOS 64 bits est créé.A macOS 64-bit executable is created.

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

Publiez une application autonome et ReadyToRun.Publish an app self-contained and ReadyToRun. Un fichier exécutable Windows 64 bits est créé.A Windows 64-bit executable is created.

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

Voir aussiSee also