Visão geral da publicação de aplicativos do .NET Core.NET Core application publishing overview

Os aplicativos criados com o .NET Core podem ser publicados em dois modos diferentes, e o modo afeta a forma como um usuário executa seu aplicativo.Applications you create with .NET Core can be published in two different modes, and the mode affects how a user runs your app.

Publicar seu aplicativo como independente produz um aplicativo que inclui o tempo de execução e as bibliotecas do .NET Core e seu aplicativo e suas dependências.Publishing your app as self-contained produces an application that includes the .NET Core runtime and libraries, and your application and its dependencies. Os usuários do aplicativo podem executá-lo em um computador que não tem o tempo de execução do .NET Core instalado.Users of the application can run it on a machine that doesn't have the .NET Core runtime installed.

Publicar seu aplicativo como dependente de estrutura produz um aplicativo que inclui somente seu aplicativo e suas dependências.Publishing your app as framework-dependent produces an application that includes only your application itself and its dependencies. Os usuários do aplicativo precisam instalar separadamente o tempo de execução do .NET Core.Users of the application have to separately install the .NET Core runtime.

Os dois modos de publicação produzem um executável específico da plataforma por padrão.Both publishing modes produce a platform-specific executable by default. Aplicativos dependentes de estrutura podem ser criados sem um executável, e esses aplicativos são de plataforma cruzada.Framework-dependent applications can be created without an executable, and these applications are cross-platform.

Quando um executável é produzido, você pode especificar a plataforma de destino com um RID (identificador de tempo de execução).When an executable is produced, you can specify the target platform with a runtime identifier (RID). Para obter mais informações sobre RIDs, consulte Catálogo de RID do .NET Core.For more information about RIDs, see .NET Core RID Catalog.

A tabela a seguir descreve os comandos usados para publicar um aplicativo como dependente da estrutura ou independente, por versão do 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 ComandoCommand
executável dependente de estrutura para a plataforma atual.framework-dependent executable for the current platform. ✔️✔️ dotnet publish
executável dependente de estrutura para uma plataforma específica.framework-dependent executable for a specific platform. ✔️✔️ dotnet publish -r <RID> --self-contained false
binário de plataforma cruzada dependente de estrutura.framework-dependent cross-platform binary. ✔️✔️ ✔️✔️ dotnet publish
executável independente.self-contained executable. ✔️✔️ ✔️✔️ dotnet publish -r <RID>

Para obter mais informações, consulte o comando dotnet Publish do .NET Core.For more information, see .NET Core dotnet publish command.

Produzir um executávelProduce an executable

Os executáveis não são de plataforma cruzada.Executables aren't cross-platform. Elas são específicas para um sistema operacional e arquitetura de CPU.They're specific to an operating system and CPU architecture. Ao publicar seu aplicativo e criar um executável, você pode publicar o aplicativo como independente ou dependente de estrutura.When publishing your app and creating an executable, you can publish the app as self-contained or framework-dependent. A publicação de um aplicativo como independente inclui o tempo de execução do .NET Core com o aplicativo, e os usuários do aplicativo não precisam se preocupar com a instalação do .NET Core antes de executar o aplicativo.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. Os aplicativos publicados como dependentes da estrutura não incluem o tempo de execução e as bibliotecas do .NET Core; somente o aplicativo e as dependências de terceiros são incluídos.Apps published as framework-dependent don't include the .NET Core runtime and libraries; only the app and 3rd-party dependencies are included.

Os comandos a seguir produzem um executável:The following commands produce an executable:

TypeType SDK 2.1SDK 2.1 SDK 3. xSDK 3.x ComandoCommand
executável dependente de estrutura para a plataforma atual.framework-dependent executable for the current platform. ✔️✔️ dotnet publish
executável dependente de estrutura para uma plataforma específica.framework-dependent executable for a specific platform. ✔️✔️ dotnet publish -r <RID> --self-contained false
executável independente.self-contained executable. ✔️✔️ ✔️✔️ dotnet publish -r <RID>

Produzir um binário de plataforma cruzadaProduce a cross-platform binary

Binários de plataforma cruzada são criados quando você publica seu aplicativo como dependente de estrutura, na forma de um arquivo dll .Cross-platform binaries are created when you publish your app as framework-dependent, in the form of a dll file. O arquivo dll é nomeado após o seu projeto.The dll file is named after your project. Por exemplo, se você tiver um aplicativo chamado word_reader, um arquivo chamado word_reader.dll será criado.For example, if you have an app named word_reader, a file named word_reader.dll is created. Os aplicativos publicados dessa maneira são executados com o dotnet <filename.dll> comando e podem ser executados em qualquer plataforma.Apps published in this way are run with the dotnet <filename.dll> command and can be run on any platform.

Os binários de plataforma cruzada podem ser executados em qualquer sistema operacional, desde que o tempo de execução do .NET Core de destino já esteja instalado.Cross-platform binaries can be run on any operating system as long as the targeted .NET Core runtime is already installed. Se o tempo de execução do .NET Core de destino não estiver instalado, o aplicativo poderá ser executado usando um tempo de execução mais recente se o aplicativo estiver configurado para ser revertido.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. Para obter mais informações, consulte roll forward de aplicativos dependentes da estrutura.For more information, see framework-dependent apps roll forward.

O comando a seguir produz um binário de plataforma cruzada:The following command produces a cross-platform binary:

TypeType SDK 2.1SDK 2.1 SDK 3. xSDK 3.x ComandoCommand
binário de plataforma cruzada dependente de estrutura.framework-dependent cross-platform binary. ✔️✔️ ✔️✔️ dotnet publish

Publicar a estrutura dependentePublish framework-dependent

Os aplicativos publicados como dependentes da estrutura são de plataforma cruzada e não incluem o tempo de execução do .NET Core.Apps published as framework-dependent are cross-platform and don't include the .NET Core runtime. O usuário do seu aplicativo é necessário para instalar o tempo de execução do .NET Core.The user of your app is required to install the .NET Core runtime.

A publicação de um aplicativo como dependente de estrutura produz um binário de plataforma cruzada como um arquivo dll e um executável específico da plataforma destinado à sua plataforma atual.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. A dll é de plataforma cruzada enquanto o executável não está.The dll is cross-platform while the executable isn't. Por exemplo, se você publicar um aplicativo chamado word_reader e o Windows de destino, um word_reader.exe executável será criado junto com 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. Ao direcionar para Linux ou macOS, um word_reader executável é criado junto com word_reader.dll.When targeting Linux or macOS, a word_reader executable is created along with word_reader.dll. Para obter mais informações sobre RIDs, consulte Catálogo de RID do .NET Core.For more information about RIDs, see .NET Core RID Catalog.

Importante

SDK do .NET Core 2,1 não produz executáveis específicos da plataforma quando você publica um dependente do App Framework..NET Core SDK 2.1 doesn't produce platform-specific executables when you publish an app framework-dependent.

O binário de plataforma cruzada do seu aplicativo pode ser executado com o dotnet <filename.dll> comando e pode ser executado em qualquer plataforma.The cross-platform binary of your app can be run with the dotnet <filename.dll> command, and can be run on any platform. Se o aplicativo usar um pacote NuGet que tenha implementações específicas de plataforma, as dependências de todas as plataformas serão copiadas para a pasta de publicação junto com o aplicativo.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.

Você pode criar um executável para uma plataforma específica passando os -r <RID> --self-contained false parâmetros para o dotnet publish comando.You can create an executable for a specific platform by passing the -r <RID> --self-contained false parameters to the dotnet publish command. Quando o -r parâmetro é omitido, um executável é criado para sua plataforma atual.When the -r parameter is omitted, an executable is created for your current platform. Todos os pacotes NuGet que têm dependências específicas da plataforma para a plataforma de destino são copiados para a pasta de publicação.Any NuGet packages that have platform-specific dependencies for the targeted platform are copied to the publish folder. Se você não precisar de um executável específico do platfrom, poderá especificar <UseAppHost>False</UseAppHost> no arquivo do projeto.If you don't need a platfrom-specific executable, you can specify <UseAppHost>False</UseAppHost> in the project file. Para obter mais informações, consulte referência do MSBuild para projetos do SDK do .net.For more information, see MSBuild reference for .NET SDK projects.

VantagensAdvantages

  • Implantação pequenaSmall deployment
    Somente seu aplicativo e suas dependências são distribuídos.Only your app and its dependencies are distributed. O tempo de execução e as bibliotecas do .NET Core são instalados pelo usuário e todos os aplicativos compartilham o tempo de execução.The .NET Core runtime and libraries are installed by the user and all apps share the runtime.

  • Plataforma cruzadaCross-platform
    Seu aplicativo e qualquer. A biblioteca baseada em rede é executada em outros sistemas operacionais.Your app and any .NET-based library runs on other operating systems. Você não precisa definir uma plataforma de destino para seu aplicativo.You don't need to define a target platform for your app. Para obter informações sobre o formato de arquivo .NET, consulte formato de arquivo de assembly .net.For information about the .NET file format, see .NET Assembly File Format.

  • Usa o tempo de execução com patch mais recenteUses the latest patched runtime
    O aplicativo usa o tempo de execução mais recente (dentro da família principal do .NET Core de destino) instalada no sistema de destino.The app uses the latest runtime (within the targeted major-minor family of .NET Core) installed on the target system. Isso significa que seu aplicativo usa automaticamente a versão mais recente com patches do tempo de execução do .NET Core.This means your app automatically uses the latest patched version of the .NET Core runtime. Esse comportamento padrão pode ser substituído.This default behavior can be overridden. Para obter mais informações, consulte roll forward de aplicativos dependentes da estrutura.For more information, see framework-dependent apps roll forward.

DesvantagensDisadvantages

  • Requer a pré-instalação do tempo de execuçãoRequires pre-installing the runtime
    Seu aplicativo só poderá ser executado se a versão do .NET Core de destino do seu aplicativo já estiver instalada no sistema host.Your app can run only if the version of .NET Core your app targets is already installed on the host system. Você pode configurar o comportamento de roll-forward para que o aplicativo exija uma versão específica do .NET Core ou permitir uma versão mais recente do .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. Para obter mais informações, consulte roll forward de aplicativos dependentes da estrutura.For more information, see framework-dependent apps roll forward.

  • O .NET Core pode ser alterado.NET Core may change
    É possível que as bibliotecas e o tempo de execução do .NET Core sejam atualizados no computador em que o aplicativo é executado.It's possible for the .NET Core runtime and libraries to be updated on the machine where the app is run. Em casos raros, isso pode alterar o comportamento do seu aplicativo se você usar as bibliotecas do .NET Core, que a maioria dos aplicativos faz.In rare cases, this may change the behavior of your app if you use the .NET Core libraries, which most apps do. Você pode configurar como seu aplicativo usa versões mais recentes do .NET Core.You can configure how your app uses newer versions of .NET Core. Para obter mais informações, consulte roll forward de aplicativos dependentes da estrutura.For more information, see framework-dependent apps roll forward.

A desvantagem a seguir se aplica somente ao SDK do .NET Core 2,1.The following disadvantage only applies to .NET Core 2.1 SDK.

  • Use o dotnet comando para iniciar o aplicativoUse the dotnet command to start the app
    Os usuários devem executar o dotnet <filename.dll> comando para iniciar seu aplicativo.Users must run the dotnet <filename.dll> command to start your app. O SDK do .NET Core 2,1 não produz executáveis específicos da plataforma para aplicativos que dependem da estrutura publicada..NET Core 2.1 SDK doesn't produce platform-specific executables for apps published framework-dependent.

ExemplosExamples

Publicar um aplicativo dependente da estrutura de plataforma cruzada.Publish an app cross-platform framework-dependent. Um executável que se destina à sua plataforma atual é criado junto com o arquivo dll .An executable that targets your current platform is created along with the dll file.

dotnet publish

Publicar um aplicativo dependente da estrutura de plataforma cruzada.Publish an app cross-platform framework-dependent. Um executável de 64 bits do Linux é criado junto com o arquivo dll .A Linux 64-bit executable is created along with the dll file. Este comando não funciona com SDK do .NET Core 2,1.This command doesn't work with .NET Core SDK 2.1.

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

Publicar autocontidoPublish self-contained

Publicar seu aplicativo como independente produz um executável específico da plataforma.Publishing your app as self-contained produces a platform-specific executable. A pasta de publicação de saída contém todos os componentes do aplicativo, incluindo as bibliotecas do .NET Core e o tempo de execução de destino.The output publishing folder contains all components of the app, including the .NET Core libraries and target runtime. O aplicativo é isolado de outros aplicativos do .NET Core e não usa um tempo de execução compartilhado localmente instalado.The app is isolated from other .NET Core apps and doesn't use a locally installed shared runtime. O usuário do seu aplicativo não é necessário para baixar e instalar o .NET Core.The user of your app isn't required to download and install .NET Core.

O binário executável é produzido para a plataforma de destino especificada.The executable binary is produced for the specified target platform. Por exemplo, se você tiver um aplicativo chamado word_reader e publicar um executável independente para o Windows, um arquivo de word_reader.exe será criado.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. Publicação para Linux ou macOS, um arquivo de word_reader é criado.Publishing for Linux or macOS, a word_reader file is created. A plataforma e a arquitetura de destino são especificadas com o -r <RID> parâmetro para o dotnet publish comando.The target platform and architecture is specified with the -r <RID> parameter for the dotnet publish command. Para obter mais informações sobre RIDs, consulte Catálogo de RID do .NET Core.For more information about RIDs, see .NET Core RID Catalog.

Se o aplicativo tiver dependências específicas da plataforma, como um pacote NuGet que contém dependências específicas da plataforma, eles serão copiados para a pasta de publicação junto com o aplicativo.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.

VantagensAdvantages

  • Controlar versão do .NET CoreControl .NET Core version
    Você controla qual versão do .NET Core é implantada com seu aplicativo.You control which version of .NET Core is deployed with your app.

  • Direcionamento específico da plataformaPlatform-specific targeting
    Como você precisa publicar seu aplicativo para cada plataforma, você sabe onde seu aplicativo será executado.Because you have to publish your app for each platform, you know where your app will run. Se o .NET Core introduzir uma nova plataforma, os usuários não poderão executar seu aplicativo nessa plataforma até que você libere uma versão direcionada a essa plataforma.If .NET Core introduces a new platform, users can't run your app on that platform until you release a version targeting that platform. Você pode testar seu aplicativo para problemas de compatibilidade antes que os usuários executem seu aplicativo na nova plataforma.You can test your app for compatibility problems before your users run your app on the new platform.

DesvantagensDisadvantages

  • Implantações maioresLarger deployments
    Como seu aplicativo inclui o tempo de execução do .NET Core e todas as suas dependências de aplicativo, o tamanho do download e o espaço do disco rígido necessários são maiores que uma versão dependente da estrutura .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.

    Dica

    Você pode reduzir o tamanho da implantação em sistemas Linux em aproximadamente 28 MB usando o modo invariável de globalizaçãodo .NET Core.You can reduce the size of your deployment on Linux systems by approximately 28 MB by using .NET Core globalization invariant mode. Isso força seu aplicativo a tratar todas as culturas como a cultura invariável.This forces your app to treat all cultures like the invariant culture.

    Dica

    Há um recurso de corte de visualização que pode reduzir ainda mais o tamanho da sua implantação.There is a preview Trim feature that can further reduce the size of your deployment.

  • Mais difícil de atualizar a versão do .NET CoreHarder to update the .NET Core version
    O tempo de execução do .NET Core (distribuído com seu aplicativo) só pode ser atualizado com a liberação de uma nova versão do seu aplicativo..NET Core Runtime (distributed with your app) can only be upgraded by releasing a new version of your app. No entanto, o .NET Core atualizará os patches de segurança críticos conforme necessário para a biblioteca do Framework no computador em que seu aplicativo é executado.However, .NET Core will update critical security patches as needed for the framework library in the machine that your app runs on. Você é responsável pela validação de ponta a ponta deste cenário de patch de segurança.You are responsible for end to end validation for this security patch scenario.

ExemplosExamples

Publicar um aplicativo independente.Publish an app self-contained. Um executável macOS 64-bit é criado.A macOS 64-bit executable is created.

dotnet publish -r osx-x64

Publicar um aplicativo independente.Publish an app self-contained. Um executável do Windows de 64 bits é criado.A Windows 64-bit executable is created.

dotnet publish -r win-x64

Publicar com imagens ReadyToRunPublish with ReadyToRun images

A publicação com imagens ReadyToRun melhorará o tempo de inicialização do seu aplicativo com o custo de aumentar o tamanho do seu aplicativo.Publishing with ReadyToRun images will improve the startup time of your application at the cost of increasing the size of your application. Para publicar com ReadyToRun, consulte ReadyToRun para obter mais detalhes.In order to publish with ReadyToRun see ReadyToRun for more details.

VantagensAdvantages

  • Tempo de inicialização melhoradoImproved startup time
    O aplicativo passará menos tempo executando o JIT.The application will spend less time running the JIT.

DesvantagensDisadvantages

  • Tamanho maiorLarger size
    O aplicativo será maior em disco.The application will be larger on disk.

ExemplosExamples

Publicar um aplicativo independente e ReadyToRun.Publish an app self-contained and ReadyToRun. Um executável macOS 64-bit é criado.A macOS 64-bit executable is created.

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

Publicar um aplicativo independente e ReadyToRun.Publish an app self-contained and ReadyToRun. Um executável do Windows de 64 bits é criado.A Windows 64-bit executable is created.

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

Confira tambémSee also