dotnet publishdotnet publish

Cet article s’applique à : ✔️ le kit de développement logiciel (SDK) .net Core 2,1 et versions ultérieuresThis article applies to: ✔️ .NET Core 2.1 SDK and later versions

NomName

dotnet publish-Publie l’application et ses dépendances dans un dossier pour le déploiement sur un système d’hébergement.dotnet publish - Publishes the application and its dependencies to a folder for deployment to a hosting system.

SynopsisSynopsis

dotnet publish [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
    [-f|--framework <FRAMEWORK>] [--force] [--interactive]
    [--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
    [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
    [-p:PublishReadyToRun=true] [-p:PublishSingleFile=true] [-p:PublishTrimmed=true]
    [-r|--runtime <RUNTIME_IDENTIFIER>] [--self-contained [true|false]]
    [--no-self-contained] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet publish -h|--help

DescriptionDescription

dotnet publish compile l’application, parcourt ses dépendances spécifiées dans le fichier projet et publie l’ensemble de fichiers obtenus dans un répertoire.dotnet publish compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory. La sortie inclut les ressources suivantes :The output includes the following assets:

  • Le code de langage intermédiaire (IL) dans un assembly avec l’extension dll.Intermediate Language (IL) code in an assembly with a dll extension.
  • Un fichier . DEPS. JSON qui contient toutes les dépendances du projet.A .deps.json file that includes all of the dependencies of the project.
  • Un fichier . runtimeconfig. JSON qui spécifie le runtime partagé attendu par l’application, ainsi que d’autres options de configuration pour le runtime (par exemple, garbage collection type).A .runtimeconfig.json file that specifies the shared runtime that the application expects, as well as other configuration options for the runtime (for example, garbage collection type).
  • Les dépendances de l’application, qui sont copiées à partir du cache NuGet dans le dossier de sortie.The application's dependencies, which are copied from the NuGet cache into the output folder.

La sortie de la commande dotnet publish est prête pour le déploiement sur un système d’hébergement (par exemple, un serveur, PC, Mac, ordinateur portable) à des fins d’exécution.The dotnet publish command's output is ready for deployment to a hosting system (for example, a server, PC, Mac, laptop) for execution. Il s’agit de la seule façon officiellement prise en charge pour préparer l’application au déploiement.It's the only officially supported way to prepare the application for deployment. En fonction du type de déploiement que spécifie le projet, le runtime .NET Core partagé peut ou non être installé sur le système d’hébergement.Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET Core shared runtime installed on it. Pour plus d’informations, consultez publier des applications .net core avec le CLI .net Core.For more information, see Publish .NET Core apps with the .NET Core CLI.

Restauration impliciteImplicit restore

Vous n’avez pas dotnet restore à courir parce qu’il est géré implicitement par dotnet newtoutes dotnet build dotnet runles dotnet testcommandes qui nécessitent une restauration à se produire, tels que , , , , dotnet publish, et dotnet pack.You don't have to run dotnet restore because it's run implicitly by all commands that require a restore to occur, such as dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, and dotnet pack. Pour désactiver la restauration --no-restore implicite, utilisez l’option.To disable implicit restore, use the --no-restore option.

La dotnet restore commande est encore utile dans certains scénarios où la restauration explicite est logique, comme l’intégration continue s’accumule dans Azure DevOps Services ou dans les systèmes de construction qui doivent contrôler explicitement lorsque la restauration se produit.The dotnet restore command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.

Pour plus d’informations sur la façon dotnet restore de gérer les flux NuGet, consultez la documentation .For information about how to manage NuGet feeds, see the dotnet restore documentation.

MSBuildMSBuild

La commande dotnet publish appelle MSBuild, qui appelle la cible de Publish.The dotnet publish command calls MSBuild, which invokes the Publish target. Les paramètres passés à dotnet publish sont passés à MSBuild.Any parameters passed to dotnet publish are passed to MSBuild. Les paramètres -c et -o correspondent aux propriétés Configuration et OutputPath de MSBuild, respectivement.The -c and -o parameters map to MSBuild's Configuration and OutputPath properties, respectively.

La dotnet publish commande accepte les options MSBuild, comme -p pour définir des propriétés et -l pour définir un enregistreur d’événements.The dotnet publish command accepts MSBuild options, such as -p for setting properties and -l to define a logger. Par exemple, vous pouvez définir une propriété MSBuild en utilisant le format : -p:<NAME>=<VALUE> .For example, you can set an MSBuild property by using the format: -p:<NAME>=<VALUE>. Vous pouvez également définir des propriétés relatives à la publication en faisant référence à un fichier . pubxml , par exemple :You can also set publish-related properties by referring to a .pubxml file, for example:

dotnet publish -p:PublishProfile=Properties\PublishProfiles\FolderProfile.pubxml

Pour plus d’informations, consultez les ressources suivantes :For more information, see the following resources:

ArgumentsArguments

  • PROJECT|SOLUTION

    Projet ou solution à publier.The project or solution to publish.

    • PROJECTest le chemin d’accès et le nom de fichier d’un fichier projet c#, f # ou Visual Basic, ou le chemin d’accès à un répertoire qui contient un fichier projet C#, f # ou Visual Basic.PROJECT is the path and filename of a C#, F#, or Visual Basic project file, or the path to a directory that contains a C#, F#, or Visual Basic project file. Si le répertoire n’est pas spécifié, le répertoire actif est utilisé par défaut.If the directory is not specified, it defaults to the current directory.

    • SOLUTIONest le chemin d’accès et le nom de fichier d’un fichier solution (extension . sln ), ou le chemin d’accès à un répertoire qui contient un fichier solution.SOLUTION is the path and filename of a solution file (.sln extension), or the path to a directory that contains a solution file. Si le répertoire n’est pas spécifié, le répertoire actif est utilisé par défaut.If the directory is not specified, it defaults to the current directory. Option disponible à partir du kit SDK .NET Core 3.0.Available since .NET Core 3.0 SDK.

OptionsOptions

  • -c|--configuration <CONFIGURATION>

    Définit la configuration de build.Defines the build configuration. La valeur par défaut pour la plupart des projets est Debug , mais vous pouvez remplacer les paramètres de configuration de build dans votre projet.The default for most projects is Debug, but you can override the build configuration settings in your project.

  • -f|--framework <FRAMEWORK>

    Publie l’application pour le framework cible spécifié.Publishes the application for the specified target framework. Le framework cible doit être spécifié dans le fichier projet.You must specify the target framework in the project file.

  • --force

    Force la résolution de toutes les dépendances même si la dernière restauration a réussi.Forces all dependencies to be resolved even if the last restore was successful. Définir cet indicateur revient à supprimer le fichier project.assets.json.Specifying this flag is the same as deleting the project.assets.json file.

  • -h|--help

    Affiche une aide brève pour la commande.Prints out a short help for the command.

  • --interactive

    Permet à la commande de s’arrêter et d’attendre une action ou une entrée utilisateur.Allows the command to stop and wait for user input or action. Par exemple, pour effectuer une authentification.For example, to complete authentication. Option disponible à partir du kit SDK .NET Core 3.0.Available since .NET Core 3.0 SDK.

  • --manifest <PATH_TO_MANIFEST_FILE>

    Spécifie un ou plusieurs manifestes cibles à utiliser pour épurer l’ensemble des packages publiés avec l’application.Specifies one or several target manifests to use to trim the set of packages published with the app. Le fichier manifeste fait partie de la sortie de la dotnet store commande.The manifest file is part of the output of the dotnet store command. Pour spécifier plusieurs manifestes, ajoutez une option --manifest pour chaque manifeste.To specify multiple manifests, add a --manifest option for each manifest.

  • --no-build

    Ne génère pas le projet avant la publication.Doesn't build the project before publishing. L’indicateur --no-restore est également défini implicitement.It also implicitly sets the --no-restore flag.

  • --no-dependencies

    Ignore les références entre projets et restaure uniquement le projet racine.Ignores project-to-project references and only restores the root project.

  • --nologo

    N’affiche pas la bannière de démarrage ni le message de copyright.Doesn't display the startup banner or the copyright message. Option disponible à partir du kit SDK .NET Core 3.0.Available since .NET Core 3.0 SDK.

  • --no-restore

    N’effectue pas de restauration implicite à l’exécution de la commande.Doesn't execute an implicit restore when running the command.

  • -o|--output <OUTPUT_DIRECTORY>

    Spécifie le chemin d’accès du répertoire de sortie.Specifies the path for the output directory.

    S’il n’est pas spécifié, la valeur par défaut est [project_file_folder]./bin/[Configuration]/[Framework]/Publish/ pour un exécutable dépendant du runtime et des binaires multiplateforme.If not specified, it defaults to [project_file_folder]./bin/[configuration]/[framework]/publish/ for a runtime-dependent executable and cross-platform binaries. La valeur par défaut est [project_file_folder]/bin/[Configuration]/[Framework]/[Runtime]/Publish/ pour un exécutable autonome.It defaults to [project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/ for a self-contained executable.

    Dans un projet Web, si le dossier de sortie se trouve dans le dossier du projet, les commandes successives dotnet publish génèrent des dossiers de sortie imbriqués.In a web project, if the output folder is in the project folder, successive dotnet publish commands result in nested output folders. Par exemple, si le dossier du projet est MyProjectet que le dossier de sortie de publication est MyProject/Publish, et que vous exécutez dotnet publish deux fois, la deuxième exécution place les fichiers de contenu, tels que les fichiers . config et . JSON dans MyProject/Publish/Publish.For example, if the project folder is myproject, and the publish output folder is myproject/publish, and you run dotnet publish twice, the second run puts content files such as .config and .json files in myproject/publish/publish. Pour éviter d’imbriquer des dossiers de publication, spécifiez un dossier de publication qui ne se trouve pas directement sous le dossier du projet, ou excluez le dossier de publication du projet.To avoid nesting publish folders, specify a publish folder that is not directly under the project folder, or exclude the publish folder from the project. Pour exclure un dossier de publication nommé publishoutput, ajoutez l’élément suivant à un PropertyGroup élément dans le fichier . csproj :To exclude a publish folder named publishoutput, add the following element to a PropertyGroup element in the .csproj file:

    <DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
    
    • Kit de développement logiciel (SDK) .NET Core 3. x et versions ultérieures.NET Core 3.x SDK and later

      Si un chemin d’accès relatif est spécifié lors de la publication d’un projet, le répertoire de sortie généré est relatif au répertoire de travail actuel, et non à l’emplacement du fichier projet.If a relative path is specified when publishing a project, the output directory generated is relative to the current working directory, not to the project file location.

      Si un chemin d’accès relatif est spécifié lors de la publication d’une solution, toutes les sorties de tous les projets sont placées dans le dossier spécifié par rapport au répertoire de travail actuel.If a relative path is specified when publishing a solution, all output for all projects goes into the specified folder relative to the current working directory. Pour que la sortie de publication passe à des dossiers distincts pour chaque projet, spécifiez un chemin d’accès relatif à l’aide PublishDir de la propriété MSBuild au lieu de l' --output option.To make publish output go to separate folders for each project, specify a relative path by using the msbuild PublishDir property instead of the --output option. Par exemple, dotnet publish -p:PublishDir=.\publish envoie la sortie de publication pour chaque projet dans un publish dossier sous le dossier qui contient le fichier projet.For example, dotnet publish -p:PublishDir=.\publish sends publish output for each project to a publish folder under the folder that contains the project file.

    • Kit de développement logiciel (SDK) .NET Core 2. x.NET Core 2.x SDK

      Si un chemin d’accès relatif est spécifié lors de la publication d’un projet, le répertoire de sortie généré est relatif à l’emplacement du fichier projet, et non au répertoire de travail actuel.If a relative path is specified when publishing a project, the output directory generated is relative to the project file location, not to the current working directory.

      Si un chemin d’accès relatif est spécifié lors de la publication d’une solution, la sortie de chaque projet passe dans un dossier distinct relatif à l’emplacement du fichier projet.If a relative path is specified when publishing a solution, each project's output goes into a separate folder relative to the project file location. Si un chemin d’accès absolu est spécifié lors de la publication d’une solution, toutes les sorties de publication de tous les projets sont placées dans le dossier spécifié.If an absolute path is specified when publishing a solution, all publish output for all projects goes into the specified folder.

  • -p:PublishReadyToRun=true

    Compile les assemblys d’application au format ReadyToRun (R2R).Compiles application assemblies as ReadyToRun (R2R) format. R2R est une forme de compilation ahead-of-time (AOT).R2R is a form of ahead-of-time (AOT) compilation. Pour plus d’informations, consultez images ReadyToRun.For more information, see ReadyToRun images. Option disponible à partir du kit SDK .NET Core 3.0.Available since .NET Core 3.0 SDK.

    Nous vous recommandons de spécifier cette option dans un profil de publication plutôt que sur la ligne de commande.We recommend that you specify this option in a publish profile rather than on the command line. Pour plus d’informations, consultez MSBuild.For more information, see MSBuild.

  • -p:PublishSingleFile=true

    Empaquette l’application dans un exécutable à fichier unique spécifique à la plateforme.Packages the app into a platform-specific single-file executable. L’exécutable est auto-extractible et contient toutes les dépendances (y compris native) requises pour exécuter l’application.The executable is self-extracting and contains all dependencies (including native) that are required to run the app. Lors de la première exécution de l’application, celle-ci est extraite d’un répertoire basé sur le nom de l’application et l’identificateur de la build.When the app is first run, the application is extracted to a directory based on the app name and build identifier. Le démarrage est plus rapide quand l’application est réexécutée.Startup is faster when the application is run again. L’application n’a pas besoin de s’extraire elle-même une deuxième fois, sauf si une nouvelle version est utilisée.The application doesn't need to extract itself a second time unless a new version is used. Option disponible à partir du kit SDK .NET Core 3.0.Available since .NET Core 3.0 SDK.

    Pour plus d’informations sur la publication monofichier, consultez le document conceptuel sur l’outil de regroupement monofichier.For more information about single-file publishing, see the single-file bundler design document.

    Nous vous recommandons de spécifier cette option dans un profil de publication plutôt que sur la ligne de commande.We recommend that you specify this option in a publish profile rather than on the command line. Pour plus d’informations, consultez MSBuild.For more information, see MSBuild.

  • -p:PublishTrimmed=true

    Supprime les bibliothèques inutilisées pour réduire la taille du déploiement d’une application lors de la publication d’un fichier exécutable autonome.Trims unused libraries to reduce the deployment size of an app when publishing a self-contained executable. Pour plus d’informations, consultez Trim self-contained Deployments and executed.For more information, see Trim self-contained deployments and executables. Option disponible à partir du kit SDK .NET Core 3.0.Available since .NET Core 3.0 SDK.

    Nous vous recommandons de spécifier cette option dans un profil de publication plutôt que sur la ligne de commande.We recommend that you specify this option in a publish profile rather than on the command line. Pour plus d’informations, consultez MSBuild.For more information, see MSBuild.

  • --self-contained [true|false]

    Publie le runtime .NET Core avec votre application ; ainsi, vous n’avez pas besoin d’installer le runtime sur l’ordinateur cible.Publishes the .NET Core runtime with your application so the runtime doesn't need to be installed on the target machine. La valeur par défaut est true si un identificateur de Runtime est spécifié et que le projet est un projet exécutable (pas un projet de bibliothèque).Default is true if a runtime identifier is specified and the project is an executable project (not a library project). Pour plus d’informations, consultez publication d’applications .net Core et publication d’applications .net core avec le CLI .net Core.For more information, see .NET Core application publishing and Publish .NET Core apps with the .NET Core CLI.

    Si cette option est utilisée sans spécifier true ou false , la valeur par défaut est true .If this option is used without specifying true or false, the default is true. Dans ce cas, ne placez pas l’argument solution ou Project immédiatement après --self-contained , car true ou false est attendu dans cette position.In that case, don't put the solution or project argument immediately after --self-contained, because true or false is expected in that position.

  • --no-self-contained

    Équivaut à --self-contained false.Equivalent to --self-contained false. Option disponible à partir du kit SDK .NET Core 3.0.Available since .NET Core 3.0 SDK.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Publie l’application pour un runtime donné.Publishes the application for a given runtime. Pour connaître les identificateurs de runtime, consultez le catalogue des identificateurs de runtime.For a list of Runtime Identifiers (RIDs), see the RID catalog. Pour plus d’informations, consultez publication d’applications .net Core et publication d’applications .net core avec le CLI .net Core.For more information, see .NET Core application publishing and Publish .NET Core apps with the .NET Core CLI.

  • -v|--verbosity <LEVEL>

    Définit le niveau de détail de la commande.Sets the verbosity level of the command. Les valeurs autorisées sont q[uiet], m[inimal], n[ormal], d[etailed] et diag[nostic].Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]. La valeur par défaut est minimal.Default value is minimal.

  • --version-suffix <VERSION_SUFFIX>

    Définit le suffixe de version qui remplace l’astérisque (*) dans le champ de version du fichier projet.Defines the version suffix to replace the asterisk (*) in the version field of the project file.

ExemplesExamples

  • Créez un binaire multiplateforme dépendant du runtime pour le projet dans le répertoire actif :Create a runtime-dependent cross-platform binary for the project in the current directory:

    dotnet publish
    

    À compter du kit de développement logiciel (SDK) .NET Core 3,0, cet exemple crée également un exécutable dépendant du runtime pour la plateforme actuelle.Starting with .NET Core 3.0 SDK, this example also creates a runtime-dependent executable for the current platform.

  • Créer un exécutable autonome pour le projet dans le répertoire actif, pour un Runtime spécifique :Create a self-contained executable for the project in the current directory, for a specific runtime:

    dotnet publish --runtime osx.10.11-x64
    

    Le RID doit se trouver dans le fichier projet.The RID must be in the project file.

  • Créez un exécutable dépendant du runtime pour le projet dans le répertoire actif, pour une plateforme spécifique :Create a runtime-dependent executable for the project in the current directory, for a specific platform:

    dotnet publish --runtime osx.10.11-x64 --self-contained false
    

    Le RID doit se trouver dans le fichier projet.The RID must be in the project file. Cet exemple s’applique au kit de développement logiciel (SDK) .NET Core 3,0 et versions ultérieures.This example applies to .NET Core 3.0 SDK and later versions.

  • Publiez le projet dans le répertoire actif, pour un Runtime spécifique et une version cible du .NET Framework :Publish the project in the current directory, for a specific runtime and target framework:

    dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
    
  • Publier le fichier projet spécifié :Publish the specified project file:

    dotnet publish ~/projects/app1/app1.csproj
    
  • Publier l’application actuelle, mais ne pas restaurer les références entre projets (P2P), uniquement le projet racine pendant l’opération de restauration :Publish the current application but don't restore project-to-project (P2P) references, just the root project during the restore operation:

    dotnet publish --no-dependencies
    

Voir aussiSee also