Treinamento
Módulo
Publish an ASP.NET Core app - Training
Learn how to publish an ASP.NET Core app for deployment to a web server or cloud service.
Não há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Os aplicativos criados com o .NET podem ser publicados em dois modos diferentes, e o modo afeta a forma como um usuário executa o aplicativo.
A publicação do seu aplicativo como autossuficiente produz um aplicativo que inclui o runtime e as bibliotecas do .NET, bem como seu aplicativo e as respectivas dependências. Os usuários do aplicativo podem executá-lo em um computador que não tenha o runtime do .NET instalado.
A publicação do seu aplicativo como dependente de estrutura produz um aplicativo que inclui apenas o próprio aplicativo e suas dependências. Os usuários do aplicativo precisam instalar separadamente o runtime do .NET.
Ambos os modos de publicação produzem um arquivo executável específico da plataforma por padrão. Aplicativos dependentes de estrutura podem ser criados sem um arquivo executável e esses aplicativos são multiplataforma.
Quando um arquivo executável é produzido, você pode especificar a plataforma de destino com um RID (identificador de runtime). Para obter mais informações sobre RIDs, consulte Catálogo de RID do .NET.
A tabela a seguir descreve os comandos usados para publicar um aplicativo como dependente de estrutura ou autossuficiente, por versão do SDK:
Tipo | SDK 2.1 | SDK 3.1 | SDK 5.0 | SDK 6.0 | Comando |
---|---|---|---|---|---|
arquivo executável dependente de estrutura para a plataforma atual. | ✔️ | ✔️ | ✔️ | dotnet publish |
|
arquivo executável dependente de estrutura para uma plataforma específica. | ✔️ | ✔️ | ✔️ | dotnet publish -r <RID> --self-contained false |
|
binário multiplataforma dependente de estrutura. | ✔️ | ✔️ | ✔️ | ✔️ | dotnet publish |
arquivo executável autônomo. | ✔️ | ✔️ | ✔️ | ✔️ | dotnet publish -r <RID> |
Para obter mais informações, consulte Comando dotnet publish do .NET.
Os arquivos executáveis não são multiplataforma. Eles são específicos de um sistema operacional e arquitetura de CPU. Ao publicar seu aplicativo e criar um arquivo executável, você pode publicar o aplicativo como autossuficiente ou dependente de estrutura. A publicação de um aplicativo como autossuficiente inclui o runtime do .NET com o aplicativo e seus usuários não precisam instalar o .NET antes de executá-lo. Os aplicativos publicados como dependentes da estrutura não incluem o runtime e as bibliotecas do .NET; somente o aplicativo e as dependências de terceiros estão incluídos.
Os seguintes comandos produzem um arquivo executável:
Tipo | SDK 2.1 | SDK 3.1 | SDK 5.0 | SDK 6.0 | Comando |
---|---|---|---|---|---|
arquivo executável dependente de estrutura para a plataforma atual. | ✔️ | ✔️ | ✔️ | dotnet publish |
|
arquivo executável dependente de estrutura para uma plataforma específica. | ✔️ | ✔️ | ✔️ | dotnet publish -r <RID> --self-contained false |
|
arquivo executável autônomo. | ✔️ | ✔️ | ✔️ | ✔️ | dotnet publish -r <RID> |
Binários multiplataforma são criados quando você publica seu aplicativo como dependente de estrutura na forma de um arquivo dll. O arquivo dll recebe o nome do projeto. Por exemplo, se você tiver um aplicativo chamado word_reader, um arquivo chamado word_reader.dll será criado. Os aplicativos publicados dessa forma são executados com o comando dotnet <filename.dll>
e podem ser executados em qualquer plataforma.
Binários multiplataforma podem ser executados em qualquer sistema operacional, desde que o runtime do .NET de destino já esteja instalado. Se o runtime do .NET de destino não estiver instalado, o aplicativo poderá ser executado usando um runtime mais recente se o aplicativo estiver configurado para efetuar roll forward. Para obter mais informações, consulte roll forward de aplicativos dependentes de estrutura.
O comando a seguir produz um binário multiplataforma:
Tipo | SDK 2.1 | SDK 3.x | SDK 5.0 | SDK 6.0 | Comando |
---|---|---|---|---|---|
binário multiplataforma dependente de estrutura. | ✔️ | ✔️ | ✔️ | ✔️ | dotnet publish |
Os aplicativos publicados como dependentes de estrutura são multiplataforma e não incluem o runtime do .NET. O usuário do seu aplicativo deve instalar o runtime do .NET.
A publicação de um aplicativo como dependente de estrutura produz um binário multiplataforma como um arquivo dll e um arquivo executável específico da plataforma direcionado à plataforma atual. A dll é multiplataforma enquanto o arquivo executável não é. Por exemplo, se você publicar um aplicativo chamado word_reader e direcionar ao Windows, um arquivo executável word_reader.exe será criado junto com word_reader.dll. Ao direcionar para o Linux ou macOS, um arquivo executável word_reader é criado junto com word_reader.dll. Para obter mais informações sobre RIDs, consulte Catálogo de RID do .NET.
Importante
O SDK 2.1 do .NET não produz arquivos executáveis específicos da plataforma quando você publica um aplicativo dependente de estrutura.
O binário multiplataforma do seu aplicativo pode ser executado com o comando dotnet <filename.dll>
e em qualquer plataforma. Se o aplicativo usar um pacote NuGet que tenha implementações específicas da plataforma, todas as dependências das plataformas serão copiadas para a pasta de publicação junto com o aplicativo.
Você pode criar um arquivo executável para uma plataforma específica passando os parâmetros -r <RID> --self-contained false
para o comando dotnet publish
. Quando o parâmetro -r
é omitido, um arquivo executável é criado para sua plataforma atual. 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. Se você não precisar de um arquivo executável específico da plataforma, poderá especificar <UseAppHost>False</UseAppHost>
no arquivo de projeto. Para obter mais informações, consulte a Referência do MSBuild para projetos do SDK do .NET.
Implantação pequena
Somente seu aplicativo e suas dependências são distribuídos. O runtime e as bibliotecas do .NET são instalados pelo usuário e todos os aplicativos compartilham o runtime.
Plataforma cruzada
Seu aplicativo e qualquer biblioteca baseada em .NET é executada em outros sistemas operacionais. Não é necessário definir uma plataforma de destino para seu aplicativo. Para obter informações sobre o formato de arquivo .NET, consulte Formato de Arquivo do Assembly .NET.
Usa o runtime corrigido mais recente
O aplicativo usa o runtime mais recente (dentro da família principal-secundária de destino do .NET) instalado no sistema de destino. Isso significa que seu aplicativo usa automaticamente a versão mais recente corrigida do runtime do .NET. Esse comportamento padrão pode ser substituído. Para obter mais informações, consulte roll forward de aplicativos dependentes de estrutura.
Requer a pré-instalação do runtime
Seu aplicativo poderá ser executado somente se a versão do .NET que seu aplicativo visa já estiver instalada no sistema host. Você pode configurar o comportamento de roll-forward para o aplicativo exigir uma versão específica do .NET ou permitir uma versão mais recente do .NET. Para obter mais informações, consulte roll forward de aplicativos dependentes de estrutura.
O .NET pode ser alterado
É possível que o runtime do .NET e as bibliotecas sejam atualizados no computador em que o aplicativo é executado. Em casos raros, isso poderá alterar o comportamento do aplicativo se você usar as bibliotecas .NET, o que a maioria dos aplicativos faz. Você pode configurar como seu aplicativo usa as versões mais recentes do .NET. Para obter mais informações, consulte roll forward de aplicativos dependentes de estrutura.
A desvantagem a seguir só se aplica ao SDK do .NET Core 2.1.
dotnet
para iniciar o aplicativodotnet <filename.dll>
para iniciar o aplicativo. O SDK do .NET Core 2.1 não produz arquivos executáveis específicos da plataforma para aplicativos que dependem da estrutura publicada.Publicar um aplicativo dependente de estrutura multiplataforma. Um arquivo executável direcionado à plataforma atual é criado junto com o arquivo dll.
dotnet publish
Publicar um aplicativo dependente de estrutura multiplataforma. Um arquivo executável de 64 bits do Linux é criado junto com o arquivo dll. Esse comando não funciona com o SDK do .NET Core 2.1.
dotnet publish -r linux-x64 --self-contained false
A publicação do aplicativo como autossuficiente produz um arquivo executável específico da plataforma. A pasta de publicação de saída contém todos os componentes do aplicativo, incluindo as bibliotecas .NET e o runtime de destino. O aplicativo é isolado de outros aplicativos .NET e não usa um runtime compartilhado instalado localmente. O usuário do aplicativo não precisa baixar e instalar o .NET.
O binário executável é produzido para a plataforma de destino especificada. Por exemplo, se você tiver um aplicativo chamado word_reader e publicar um arquivo executável autossuficiente para Windows, um arquivo word_reader.exe será criado. Na publicação para Linux ou macOS, um arquivo word_reader é criado. A plataforma e a arquitetura de destino são especificadas com o parâmetro -r <RID>
para o comando dotnet publish
. Para obter mais informações sobre RIDs, consulte Catálogo de RID do .NET.
Se o aplicativo tiver dependências específicas da plataforma, como um pacote NuGet que contém dependências específicas da plataforma, elas serão copiadas para a pasta de publicação junto com o aplicativo.
Controlar a versão do .NET
Você controla qual versão do .NET é implantada com o aplicativo.
Direcionamento específico da plataforma
Como você precisa publicar seu aplicativo para cada plataforma, você sabe onde ele será executado. Se o .NET introduzir uma nova plataforma, os usuários não poderão executar o aplicativo nessa plataforma até que você libere uma versão direcionada a ela. Você pode testar seu aplicativo para problemas de compatibilidade antes que os usuários executem seu aplicativo na nova plataforma.
Implantações maiores
Como seu aplicativo inclui o runtime do .NET e todas as dependências do aplicativo, o tamanho do download e o espaço necessário para disco rígido são maiores do que uma versão dependente de estrutura.
Dica
Você pode reduzir o tamanho da sua implantação em sistemas Linux em aproximadamente 28 MB usando o modo invariável de globalização do .NET. Isso força o aplicativo a tratar todas as culturas como a cultura invariável.
Dica
O corte IL pode reduzir ainda mais o tamanho da implantação.
É mais difícil atualizar a versão do .NET
O Runtime do .NET (distribuído com o aplicativo) só pode ser atualizado liberando uma nova versão do aplicativo. No entanto, o .NET atualizará patches de segurança críticos conforme necessário para a biblioteca de estruturas no computador em que seu aplicativo é executado. Você é responsável pela validação de ponta a ponta para esse cenário de patch de segurança.
Publique um aplicativo autônomo. Um arquivo executável de 64 bits do macOS é criado.
dotnet publish -r osx-x64
Publique um aplicativo autônomo. Um arquivo executável de 64 bits do Windows é criado.
dotnet publish -r win-x64
A publicação com imagens ReadyToRun melhorará o tempo de inicialização do aplicativo aumentando o tamanho do aplicativo. Para publicar com ReadyToRun, consulte ReadyToRun para obter mais detalhes.
Publique um aplicativo autônomo e ReadyToRun. Um arquivo executável de 64 bits do macOS é criado.
dotnet publish -c Release -r osx-x64 -p:PublishReadyToRun=true
Publique um aplicativo autônomo e ReadyToRun. Um arquivo executável de 64 bits do Windows é criado.
dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true
Treinamento
Módulo
Publish an ASP.NET Core app - Training
Learn how to publish an ASP.NET Core app for deployment to a web server or cloud service.