.NET publicação de visão geral
As aplicações que cria com .NET podem ser publicadas em dois modos diferentes, e o modo afeta a forma como um utilizador executa a sua aplicação.
A publicação da sua aplicação como independente produz uma aplicação que inclui o tempo de execução e bibliotecas .NET, bem como a sua aplicação e as suas dependências. Os utilizadores da aplicação podem executá-la numa máquina que não tenha o tempo de funcionamento .NET instalado.
A publicação da sua app como dependente de quadros produz uma aplicação que inclui apenas a sua própria aplicação e as suas dependências. Os utilizadores da aplicação têm de instalar separadamente o tempo de funcionamento .NET.
Ambos os modos de publicação produzem uma plataforma específica executável por padrão. As aplicações dependentes do quadro podem ser criadas sem uma executável, e estas aplicações são inter-plataforma.
Quando um executável é produzido, pode especificar a plataforma-alvo com um identificador de tempo de execução (RID). Para obter mais informações sobre rids, consulte o Catálogo .NET RID.
O quadro que se segue descreve os comandos utilizados para a publicação de uma aplicação como dependente do quadro ou autossuficiente, por versão SDK:
Tipo | SDK 2.1 | SDK 3.1 | SDK 5.0 | SDK 6.0 | Comando |
---|---|---|---|---|---|
quadro dependente executável para a plataforma atual. | ✔️ | ✔️ | ✔️ | dotnet publish |
|
executável dependente de quadros para uma plataforma específica. | ✔️ | ✔️ | ✔️ | dotnet publish -r <RID> --self-contained false |
|
binário de plataforma dependente de quadros. | ✔️ | ✔️ | ✔️ | ✔️ | dotnet publish |
autossuficiente executável. | ✔️ | ✔️ | ✔️ | ✔️ | dotnet publish -r <RID> |
Para obter mais informações, consulte o comando de publicação .NET dotnet.
Produzir um executável
Executáveis não são inter-plataforma. São específicos de um sistema operativo e arquitetura cpu. Ao publicar a sua aplicação e criar uma aplicação executável, pode publicar a aplicação como independente ou dependente de quadros. A publicação de uma aplicação como independente inclui o tempo de execução .NET com a app, e os utilizadores da aplicação não têm de se preocupar em instalar .NET antes de executar a aplicação. As aplicações publicadas como dependentes do quadro não incluem o tempo de funcionamento e bibliotecas .NET; apenas a app e as dependências do terceiro terceiro partido estão incluídas.
Os seguintes comandos produzem um executável:
Tipo | SDK 2.1 | SDK 3.1 | SDK 5.0 | SDK 6.0 | Comando |
---|---|---|---|---|---|
quadro dependente executável para a plataforma atual. | ✔️ | ✔️ | ✔️ | dotnet publish |
|
executável dependente de quadros para uma plataforma específica. | ✔️ | ✔️ | ✔️ | dotnet publish -r <RID> --self-contained false |
|
autossuficiente executável. | ✔️ | ✔️ | ✔️ | ✔️ | dotnet publish -r <RID> |
Produzir um binário transversal
Os binários de plataforma cruzada são criados quando publica a sua app como dependente de quadros, sob a forma de um ficheiro dll . O ficheiro dll tem o nome do seu projeto. Por exemplo, se tiver uma aplicação com o nome word_reader, é criado um ficheiro com o nomeword_reader.dll . As aplicações publicadas desta forma são executadas com o dotnet <filename.dll>
comando e podem ser executadas em qualquer plataforma.
Binários de plataformas cruzadas podem ser executados em qualquer sistema operativo, desde que o tempo de funcionamento .NET já esteja instalado. Se o tempo de execução .NET direcionado não for instalado, a aplicação poderá ser executada utilizando um tempo de execução mais recente se a aplicação estiver configurada para avançar. Para obter mais informações, consulte as aplicações dependentes do quadro.
O seguinte comando produz um binário transversal:
Tipo | SDK 2.1 | SDK 3.x | SDK 5.0 | SDK 6.0 | Comando |
---|---|---|---|---|---|
binário de plataforma dependente de quadros. | ✔️ | ✔️ | ✔️ | ✔️ | dotnet publish |
Publicar quadro-dependente
As aplicações publicadas como dependentes do quadro são inter-plataforma e não incluem o tempo de execução .NET. O utilizador da sua aplicação é obrigado a instalar o tempo de funcionação .NET.
Publicar uma aplicação como dependente de quadros produz um binário transversal como um ficheiro dll , e um executável específico da plataforma que visa a sua plataforma atual. O dll é transversal enquanto o executável não é. Por exemplo, se publicar uma aplicação chamada word_reader e Windows-alvo, é criada uma word_reader.exe executável juntamente com word_reader.dll. Ao direcionar o Linux ou o macOS, é criado um word_reader executável juntamente com word_reader.dll. Para obter mais informações sobre rids, consulte o Catálogo .NET RID.
Importante
.NET SDK 2.1 não produz executáveis específicos da plataforma quando publica uma aplicação dependente do quadro de aplicações.
O binário transversal da sua aplicação pode ser executado com o dotnet <filename.dll>
comando, e pode ser executado em qualquer plataforma. Se a aplicação utilizar um pacote NuGet que tenha implementações específicas da plataforma, todas as dependências das plataformas são copiadas para a pasta de publicação juntamente com a aplicação.
Pode criar um executável para uma plataforma específica, passando os -r <RID> --self-contained false
parâmetros para o dotnet publish
comando. Quando o -r
parâmetro é omitido, um executável é criado para a sua plataforma atual. Quaisquer pacotes NuGet que tenham dependências específicas da plataforma para a plataforma específica são copiados para a pasta de publicação. Se não precisar de uma execução específica da plataforma, pode especificar <UseAppHost>False</UseAppHost>
no ficheiro do projeto. Para mais informações, consulte a referência MSBuild para projetos .NET SDK.
Vantagens
Pequena implantação
Apenas a sua aplicação e as suas dependências são distribuídas. O tempo de funcionação e as bibliotecas .NET são instalados pelo utilizador e todas as aplicações partilham o tempo de execução.Plataforma transversal
A sua aplicação e qualquer um. A biblioteca baseada na NET funciona em outros sistemas operativos. Não precisa de definir uma plataforma-alvo para a sua aplicação. Para obter informações sobre o formato de ficheiro .NET, consulte o formato de ficheiro de montagem .NET.Utiliza o último tempo de execução remendado
A aplicação utiliza o mais recente tempo de execução (dentro da família principal-menor de .NET) instalada no sistema alvo. Isto significa que a sua aplicação utiliza automaticamente a versão mais recente corrigida do tempo de execução .NET. Este comportamento predefinido pode ser ultrapassado. Para obter mais informações, consulte as aplicações dependentes do quadro.
Desvantagens
Requer pré-instalação do tempo de execução
A sua aplicação só pode ser executada se a versão de .NET os seus alvos de aplicação já estiverem instalados no sistema de anfitriões. Pode configurar o comportamento de avanço para a aplicação para exigir uma versão específica de .NET ou permitir uma versão mais recente de .NET. Para obter mais informações, consulte as aplicações dependentes do quadro..NET pode mudar
É possível que o tempo de funcionação e as bibliotecas .NET sejam atualizados na máquina onde a aplicação é executada. Em casos raros, isso pode alterar o comportamento da sua app se utilizar as bibliotecas .NET, o que a maioria das aplicações fazem. Pode configurar como a sua aplicação utiliza versões mais recentes de .NET. Para obter mais informações, consulte as aplicações dependentes do quadro.
A seguinte desvantagem aplica-se apenas a .NET Core 2.1 SDK.
- Use o
dotnet
comando para iniciar a aplicação
Os utilizadores devem executar odotnet <filename.dll>
comando para iniciar a sua aplicação. .NET Core 2.1 SDK não produz executáveis específicos da plataforma para aplicações publicadas dependentes do quadro.
Exemplos
Publique uma aplicação inter-plataforma dependente do quadro. Um executável que direcione a sua plataforma atual é criado juntamente com o ficheiro dll .
dotnet publish
Publique uma aplicação inter-plataforma dependente do quadro. Um Linux de 64 bits é criado juntamente com o ficheiro dll . Este comando não funciona com .NET Core SDK 2.1.
dotnet publish -r linux-x64 --self-contained false
Publicar autossuficiente
Publicar a sua aplicação como independente produz uma plataforma específica executável. A pasta de publicação de saída contém todos os componentes da aplicação, incluindo as bibliotecas .NET e o tempo de execução do alvo. A aplicação está isolada de outras aplicações .NET e não utiliza um tempo de execução partilhado instalado localmente. O utilizador da sua aplicação não é obrigado a descarregar e instalar .NET.
O binário executável é produzido para a plataforma-alvo especificada. Por exemplo, se tiver uma aplicação com o nome word_reader e publicar um executável independente para Windows, é criado um ficheiro word_reader.exe. A publicação para Linux ou macOS, é criado um ficheiro word_reader . A plataforma-alvo e a arquitetura são especificadas com o -r <RID>
parâmetro para o dotnet publish
comando. Para obter mais informações sobre rids, consulte o Catálogo .NET RID.
Se a aplicação tiver dependências específicas da plataforma, como um pacote NuGet que contenha dependências específicas da plataforma, estas são copiadas para a pasta de publicação juntamente com a aplicação.
Vantagens
Versão Control .NET
Controla qual versão de .NET é implementada com a sua aplicação.Segmentagem específica da plataforma
Como tem de publicar a sua aplicação para cada plataforma, sabe onde a sua aplicação vai funcionar. Se .NET introduzir uma nova plataforma, os utilizadores não podem executar a sua aplicação nessa plataforma até que lance uma versão direcionada para essa plataforma. Pode testar a sua aplicação para problemas de compatibilidade antes que os seus utilizadores executem a sua aplicação na nova plataforma.
Desvantagens
Implementações maiores
Como a sua aplicação inclui o tempo de funcionamento .NET e todas as dependências da sua aplicação, o tamanho de descarregamento e o espaço de disco rígido necessário é maior do que uma versão dependente do quadro .Dica
Pode reduzir o tamanho da sua implementação nos sistemas Linux em aproximadamente 28 MB utilizando o modo invariante de globalização .NET. Isto força a sua app a tratar todas as culturas como a cultura invariante.
Dica
O corte IL pode reduzir ainda mais o tamanho da sua implantação.
Mais difícil de atualizar a versão .NET
.NET Runtime (distribuído com a sua aplicação) só pode ser atualizado através da libertação de uma nova versão da sua aplicação. No entanto, .NET atualizará patches de segurança críticos conforme necessário para a biblioteca-quadro na máquina em que a sua aplicação é executado. Você é responsável pelo fim da validação final para este cenário de patch de segurança.
Exemplos
Publique uma aplicação autossuficiente. É criado um macOS de 64 bits.
dotnet publish -r osx-x64
Publique uma aplicação autossuficiente. É criado um executável de 64 bits de Windows.
dotnet publish -r win-x64
Publicar com imagens ReadyToRun
A publicação com imagens ReadyToRun irá melhorar o tempo de arranque da sua aplicação, à custa do aumento do tamanho da sua aplicação. Para publicar com ReadyToRun consulte ReadyToRun para mais detalhes.
Vantagens
- Tempo de arranque melhorado
A aplicação passará menos tempo a gerir o JIT.
Desvantagens
- Tamanho maior
A aplicação será maior no disco.
Exemplos
Publique uma aplicação autossuficiente e ReadyToRun. É criado um macOS de 64 bits.
dotnet publish -c Release -r osx-x64 -p:PublishReadyToRun=true
Publique uma aplicação autossuficiente e ReadyToRun. É criado um executável de 64 bits de Windows.
dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true