dotnet publishdotnet publish

Este artigo aplica-se a: ✔️ SDK do .net Core 2,1 e versões posterioresThis article applies to: ✔️ .NET Core 2.1 SDK and later versions

NomeName

dotnet publish – Publica o aplicativo e suas dependências em uma pasta para implantação em um sistema de hospedagem.dotnet publish - Publishes the application and its dependencies to a folder for deployment to a hosting system.

SinopseSynopsis

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

DescriçãoDescription

dotnet publish compila o aplicativo, lê suas dependências especificadas no arquivo de projeto e publica o conjunto de arquivos resultantes em um diretório.dotnet publish compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory. A saída inclui os seguintes ativos:The output includes the following assets:

  • Código IL (Linguagem Intermediária) em um assembly com uma extensão dll.Intermediate Language (IL) code in an assembly with a dll extension.
  • Um .deps.jsno arquivo que inclui todas as dependências do projeto.A .deps.json file that includes all of the dependencies of the project.
  • Um .runtimeconfig.jsno arquivo que especifica o tempo de execução compartilhado que o aplicativo espera, bem como outras opções de configuração para o tempo de execução (por exemplo, tipo de coleta de lixo).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).
  • As dependências do aplicativo, que são copiadas do cache NuGet para a pasta de saída.The application's dependencies, which are copied from the NuGet cache into the output folder.

A saída do comando dotnet publish está pronta para implantação em um sistema de hospedagem (por exemplo, um servidor, um computador, um Mac, um laptop) para execução.The dotnet publish command's output is ready for deployment to a hosting system (for example, a server, PC, Mac, laptop) for execution. É a única maneira com suporte oficial de preparar o aplicativo para implantação.It's the only officially supported way to prepare the application for deployment. Dependendo do tipo de implantação que o projeto especifica, o sistema de hospedagem pode ou não ter o tempo de execução compartilhado do .NET instalado nele.Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET shared runtime installed on it. Para obter mais informações, consulte publicar aplicativos .NET com a CLI do .net.For more information, see Publish .NET apps with the .NET CLI.

Restauração implícitaImplicit restore

Você não precisa executar dotnet restore o porque ele é executado implicitamente por todos os comandos que exigem a ocorrência de uma restauração, como,,,, dotnet new dotnet build dotnet run dotnet test dotnet publish e 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. Para desabilitar a restauração implícita, use a --no-restore opção.To disable implicit restore, use the --no-restore option.

O dotnet restore comando ainda é útil em determinados cenários em que a restauração explícita faz sentido, como compilações de integração contínua em Azure DevOps Services ou em sistemas de compilação que precisam controlar explicitamente quando a restauração ocorre.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.

Para obter informações sobre como gerenciar feeds do NuGet, consulte a dotnet restore documentação.For information about how to manage NuGet feeds, see the dotnet restore documentation.

MSBuildMSBuild

O comando dotnet publish chama MSBuild, que invoca o destino Publish.The dotnet publish command calls MSBuild, which invokes the Publish target. Quaisquer parâmetros passados para dotnet publish são passados para o MSBuild.Any parameters passed to dotnet publish are passed to MSBuild. Os parâmetros -c e -o mapeiam as propriedades Configuration e PublishDir do MSBuild, respectivamente.The -c and -o parameters map to MSBuild's Configuration and PublishDir properties, respectively.

O dotnet publish comando aceita opções do MSBuild, como -p para configurar propriedades e -l definir um agente de log.The dotnet publish command accepts MSBuild options, such as -p for setting properties and -l to define a logger. Por exemplo, você pode definir uma propriedade do MSBuild usando o formato: -p:<NAME>=<VALUE> .For example, you can set an MSBuild property by using the format: -p:<NAME>=<VALUE>.

Você também pode definir propriedades relacionadas à publicação fazendo referência a um arquivo . pubxml (disponível desde o SDK do .net Core 3,1).You can also set publish-related properties by referring to a .pubxml file (available since .NET Core 3.1 SDK). Por exemplo:For example:

dotnet publish -p:PublishProfile=FolderProfile

O exemplo anterior usa o arquivo FolderProfile. pubxml que é encontrado na pasta <project_folder> /Properties/PublishProfiles .The preceding example uses the FolderProfile.pubxml file that is found in the <project_folder>/Properties/PublishProfiles folder. Se você especificar um caminho e uma extensão de arquivo ao definir a PublishProfile propriedade, eles serão ignorados.If you specify a path and file extension when setting the PublishProfile property, they are ignored. Por padrão, o MSBuild procura na pasta Properties/PublishProfiles e assume a extensão de arquivo pubxml .MSBuild by default looks in the Properties/PublishProfiles folder and assumes the pubxml file extension. Para especificar o caminho e o nome de arquivo, incluindo a extensão, defina a PublishProfileFullPath propriedade em vez da PublishProfile propriedade.To specify the path and filename including extension, set the PublishProfileFullPath property instead of the PublishProfile property.

Para obter mais informações, consulte os seguintes recursos:For more information, see the following resources:

ArgumentosArguments

  • PROJECT|SOLUTION

    O projeto ou solução a ser publicada.The project or solution to publish.

    • PROJECT é o caminho e o nome de arquivo de um Visual Basic de projeto em C#, F # ou Visual Basic, ou o caminho para um diretório que contém um arquivo de projeto C#, F # ou.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. Se o diretório não for especificado, o padrão será o diretório atual.If the directory is not specified, it defaults to the current directory.

    • SOLUTION é o caminho e o nome de arquivo de uma solução (extensão . sln ) ou o caminho para um diretório que contém um arquivo de solução.SOLUTION is the path and filename of a solution file (.sln extension), or the path to a directory that contains a solution file. Se o diretório não for especificado, o padrão será o diretório atual.If the directory is not specified, it defaults to the current directory. Disponível desde o SDK do .NET Core 3.0.Available since .NET Core 3.0 SDK.

OpçõesOptions

  • -c|--configuration <CONFIGURATION>

    Define a configuração da compilação.Defines the build configuration. O padrão para a maioria dos projetos é Debug , mas você pode substituir as definições de configuração de compilação em seu projeto.The default for most projects is Debug, but you can override the build configuration settings in your project.

  • -f|--framework <FRAMEWORK>

    Publica o aplicativo para a estrutura de destino especificada.Publishes the application for the specified target framework. Especifique a estrutura de destino no arquivo de projeto.You must specify the target framework in the project file.

  • --force

    Forçará todas as dependências a serem resolvidas mesmo se última restauração tiver sido bem-sucedida.Forces all dependencies to be resolved even if the last restore was successful. A especificação desse sinalizador é o mesmo que a exclusão do arquivo project.assets.json.Specifying this flag is the same as deleting the project.assets.json file.

  • -h|--help

    Imprime uma ajuda breve para o comando.Prints out a short help for the command.

  • --interactive

    Permite que o comando pare e aguarde entrada ou ação do usuário.Allows the command to stop and wait for user input or action. Por exemplo, para concluir a autenticação.For example, to complete authentication. Disponível desde o SDK do .NET Core 3.0.Available since .NET Core 3.0 SDK.

  • --manifest <PATH_TO_MANIFEST_FILE>

    Especifica um ou vários manifestos de destino a serem usados para cortar o conjunto de pacotes publicados com o aplicativo.Specifies one or several target manifests to use to trim the set of packages published with the app. O arquivo de manifesto faz parte da saída do dotnet store comando.The manifest file is part of the output of the dotnet store command. Para especificar vários manifestos, adicione uma opção --manifest para cada manifesto.To specify multiple manifests, add a --manifest option for each manifest.

  • --no-build

    Não compila o projeto antes da publicação.Doesn't build the project before publishing. Também define o sinalizador --no-restore implicitamente.It also implicitly sets the --no-restore flag.

  • --no-dependencies

    Ignora as referências projeto a projeto e só restaura o projeto raiz.Ignores project-to-project references and only restores the root project.

  • --nologo

    Não exibe a faixa de inicialização nem a mensagem de direitos autorais.Doesn't display the startup banner or the copyright message. Disponível desde o SDK do .NET Core 3.0.Available since .NET Core 3.0 SDK.

  • --no-restore

    Não executa uma restauração implícita ao executar o comando.Doesn't execute an implicit restore when running the command.

  • -o|--output <OUTPUT_DIRECTORY>

    Especifica o caminho para o diretório de saída.Specifies the path for the output directory.

    Se não for especificado, o padrão é [project_file_folder]/bin/[Configuration]/[Framework]/Publish/ para um executável dependente de estrutura e binários de plataforma cruzada.If not specified, it defaults to [project_file_folder]/bin/[configuration]/[framework]/publish/ for a framework-dependent executable and cross-platform binaries. O padrão é [project_file_folder]/bin/[Configuration]/[Framework]/[Runtime]/Publish/ para um executável independente.It defaults to [project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/ for a self-contained executable.

    Em um projeto Web, se a pasta de saída estiver na pasta do projeto, os dotnet publish comandos sucessivos resultarão em pastas de saída aninhadas.In a web project, if the output folder is in the project folder, successive dotnet publish commands result in nested output folders. Por exemplo, se a pasta do projeto for MyProject e a pasta de saída de publicação for MyProject/Publish e você dotnet publish executar duas vezes, a segunda execução colocará arquivos de conteúdo como arquivos . config e . JSON no MyProject/publicar/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. Para evitar o aninhamento de pastas de publicação, especifique uma pasta de publicação que não esteja diretamente sob a pasta do projeto ou exclua a pasta de publicação do projeto.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. Para excluir uma pasta de publicação chamada publishoutput, adicione o seguinte elemento a um PropertyGroup elemento no arquivo . csproj :To exclude a publish folder named publishoutput, add the following element to a PropertyGroup element in the .csproj file:

    <DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
    
    • SDK do .NET Core 3. x e posterior.NET Core 3.x SDK and later

      Se você especificar um caminho relativo ao publicar um projeto, o diretório de saída gerado será relativo ao diretório de trabalho atual, não ao local do arquivo do projeto.If you specify a relative path when publishing a project, the generated output directory is relative to the current working directory, not to the project file location.

      Se você especificar um caminho relativo ao publicar uma solução, toda a saída de todos os projetos entrará na pasta especificada em relação ao diretório de trabalho atual.If you specify a relative path when publishing a solution, all output for all projects goes into the specified folder relative to the current working directory. Para fazer com que a saída de publicação vá para pastas separadas para cada projeto, especifique um caminho relativo usando a PublishDir Propriedade MSBuild em vez da --output opção.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. Por exemplo, dotnet publish -p:PublishDir=.\publish envia a saída de publicação para cada projeto em uma publish pasta sob a pasta que contém o arquivo de projeto.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.

    • SDK do .NET Core 2. x.NET Core 2.x SDK

      Se você especificar um caminho relativo ao publicar um projeto, o diretório de saída gerado será relativo ao local do arquivo de projeto, não ao diretório de trabalho atual.If you specify a relative path when publishing a project, the generated output directory is relative to the project file location, not to the current working directory.

      Se você especificar um caminho relativo ao publicar uma solução, a saída de cada projeto entrará em uma pasta separada relativa ao local do arquivo do projeto.If you specify a relative path when publishing a solution, each project's output goes into a separate folder relative to the project file location. Se você especificar um caminho absoluto ao publicar uma solução, toda a saída de publicação de todos os projetos vai para a pasta especificada.If you specify an absolute path when publishing a solution, all publish output for all projects goes into the specified folder.

  • -p:PublishReadyToRun=true

    Compila assemblies de aplicativo como o formato ReadyToRun (R2R).Compiles application assemblies as ReadyToRun (R2R) format. R2R é uma forma de compilação antecipada (AOT).R2R is a form of ahead-of-time (AOT) compilation. Para obter mais informações, consulte ReadyToRun images.For more information, see ReadyToRun images. Disponível desde o SDK do .NET Core 3.0.Available since .NET Core 3.0 SDK.

    Recomendamos que você especifique essa opção em um perfil de publicação em vez de na linha de comando.We recommend that you specify this option in a publish profile rather than on the command line. Para mais informações, consulte MSBuild.For more information, see MSBuild.

  • -p:PublishSingleFile=true

    Empacota o aplicativo em um executável de arquivo único específico da plataforma.Packages the app into a platform-specific single-file executable. O executável é de extração automática e contém todas as dependências (incluindo as nativas) que são necessárias para executar o aplicativo.The executable is self-extracting and contains all dependencies (including native) that are required to run the app. Quando o aplicativo é executado pela primeira vez, o aplicativo é extraído para um diretório com base no nome do aplicativo e no identificador do build.When the app is first run, the application is extracted to a directory based on the app name and build identifier. A inicialização é mais rápida quando o aplicativo é executado novamente.Startup is faster when the application is run again. O aplicativo não precisa extrair a si mesmo uma segunda vez, a menos que uma nova versão seja usada.The application doesn't need to extract itself a second time unless a new version is used. Disponível desde o SDK do .NET Core 3.0.Available since .NET Core 3.0 SDK.

    Para obter mais informações sobre a publicação de arquivo único, consulte o documento de design de empacotador de arquivo único.For more information about single-file publishing, see the single-file bundler design document.

    Recomendamos que você especifique essa opção em um perfil de publicação em vez de na linha de comando.We recommend that you specify this option in a publish profile rather than on the command line. Para mais informações, consulte MSBuild.For more information, see MSBuild.

  • -p:PublishTrimmed=true

    Apara as bibliotecas não usadas para reduzir o tamanho da implantação de um aplicativo ao publicar um executável independente.Trims unused libraries to reduce the deployment size of an app when publishing a self-contained executable. Para obter mais informações, consulte aparar implantações e executáveis independentes.For more information, see Trim self-contained deployments and executables. Disponível desde o SDK do .NET Core 3,0 como um recurso de visualização.Available since .NET Core 3.0 SDK as a preview feature.

    Recomendamos que você especifique essa opção em um perfil de publicação em vez de na linha de comando.We recommend that you specify this option in a publish profile rather than on the command line. Para mais informações, consulte MSBuild.For more information, see MSBuild.

  • --self-contained [true|false]

    Publica o tempo de execução do .NET com seu aplicativo para que o tempo de execução não precise ser instalado no computador de destino.Publishes the .NET runtime with your application so the runtime doesn't need to be installed on the target machine. O padrão é true se um identificador de tempo de execução for especificado e o projeto for um projeto executável (não um projeto de biblioteca).Default is true if a runtime identifier is specified and the project is an executable project (not a library project). Para obter mais informações, consulte publicação de aplicativos .net e publicar aplicativos .NET com a CLI do .net.For more information, see .NET application publishing and Publish .NET apps with the .NET CLI.

    Se essa opção for usada sem especificar true ou false , o padrão será true .If this option is used without specifying true or false, the default is true. Nesse caso, não coloque a solução ou o argumento do projeto imediatamente após --self-contained , porque true ou false é esperado nessa posição.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

    Equivalente a --self-contained false.Equivalent to --self-contained false. Disponível desde o SDK do .NET Core 3.0.Available since .NET Core 3.0 SDK.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Publica o aplicativo para um determinado runtime.Publishes the application for a given runtime. Para obter uma lista de RIDs (Identificadores de Runtime), veja o Catálogo de RIDs.For a list of Runtime Identifiers (RIDs), see the RID catalog. Para obter mais informações, consulte publicação de aplicativos .net e publicar aplicativos .NET com a CLI do .net.For more information, see .NET application publishing and Publish .NET apps with the .NET CLI.

  • -v|--verbosity <LEVEL>

    Define o nível de detalhes do comando.Sets the verbosity level of the command. Os valores permitidos são q[uiet], m[inimal], n[ormal], d[etailed] e diag[nostic].Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]. O valor padrão é minimal.Default value is minimal.

  • --version-suffix <VERSION_SUFFIX>

    Define o sufixo da versão para substituir o asterisco (*) no campo de versão do arquivo de projeto.Defines the version suffix to replace the asterisk (*) in the version field of the project file.

ExemplosExamples

  • Crie um binário de plataforma cruzada dependente de estrutura para o projeto no diretório atual:Create a framework-dependent cross-platform binary for the project in the current directory:

    dotnet publish
    

    A partir do SDK do .NET Core 3,0, este exemplo também cria um executável dependente da estrutura para a plataforma atual.Starting with .NET Core 3.0 SDK, this example also creates a framework-dependent executable for the current platform.

  • Crie um executável independente para o projeto no diretório atual, para um tempo de execução específico:Create a self-contained executable for the project in the current directory, for a specific runtime:

    dotnet publish --runtime osx.10.11-x64
    

    O RID deve estar no arquivo de projeto.The RID must be in the project file.

  • Crie um executável dependente de estrutura para o projeto no diretório atual, para uma plataforma específica:Create a framework-dependent executable for the project in the current directory, for a specific platform:

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

    O RID deve estar no arquivo de projeto.The RID must be in the project file. Este exemplo se aplica ao SDK do .NET Core 3,0 e versões posteriores.This example applies to .NET Core 3.0 SDK and later versions.

  • Publicar o projeto no diretório atual, para um tempo de execução e estrutura de destino específicos:Publish the project in the current directory, for a specific runtime and target framework:

    dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
    
  • Publicar o arquivo de projeto especificado:Publish the specified project file:

    dotnet publish ~/projects/app1/app1.csproj
    
  • Publicar o aplicativo atual, mas não restaurar referências ponto a projeto (P2P), apenas o projeto raiz durante a operação de restauração: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
    

Confira tambémSee also