Cortar implantações e executáveis autossuficientes

O modelo de implantação dependente de estrutura tem sido o modelo de implantação mais bem-sucedido desde a concepção do .NET. Nesse cenário, o desenvolvedor de aplicativos agrupa apenas o aplicativo e os assemblies de terceiros com a expectativa de que o runtime e as bibliotecas de runtime do .NET estejam disponíveis no computador cliente. Esse modelo de implantação continua sendo o dominante na versão mais recente do .NET, no entanto, há alguns cenários em que o modelo dependente de estrutura não é a melhor opção. A alternativa é publicar um aplicativo autossuficiente, em que o runtime e as bibliotecas de runtime do .NET são agrupados com o aplicativo e com assemblies de terceiros.

O modelo de implantação autossuficiente cortado é uma versão especializada do modelo de implantação autossuficiente, otimizada para redução do tamanho da implantação. Minimizar o tamanho da implantação é um requisito crítico para alguns cenários do lado do cliente, como aplicativos Blazor. Dependendo da complexidade do aplicativo, apenas um subconjunto dos assemblies da estrutura são referenciados e somente um subconjunto do código de cada assembly é necessário para executar o aplicativo. As partes não utilizadas das bibliotecas são desnecessárias e podem ser cortadas do aplicativo empacotado.

No entanto, há o risco de que a análise de tempo de compilação do aplicativo possa causar falhas em tempo de execução, devido a não ser capaz de analisar de maneira confiável vários padrões de código problemáticos (em grande parte centralizados no uso de reflexão). Para atenuar esses problemas, avisos são produzidos sempre que o aparador não pode analisar totalmente um padrão de código. Para obter informações sobre o que significam os avisos de corte e como resolvê-los, confira Introdução aos avisos de corte.

Observação

  • O corte é totalmente compatível com o .NET 6 e versões posteriores. No .NET Core 3.1 e no .NET 5, o corte era um recurso experimental.
  • O corte está disponível para aplicativos que são publicados autossuficientes.

Componentes que causam problemas de corte

Aviso

Nem todos os tipos de projeto podem ser cortados. Para obter mais informações, confira Incompatibilidades de corte conhecidas.

Qualquer código que cause desafios de análise em tempo de compilação não é adequado para corte. Alguns padrões comuns de codificação que são problemáticos quando usados por um aplicativo se originam do emprego de reflexão desassociada e das dependências externas que não são visíveis no momento da compilação. Um exemplo de reflexão desassociada é um serializador herdado, como a serialização XML, e um exemplo de dependências externas invisíveis é o COM interno. Para endereçar avisos de corte em seu aplicativo, confira Introdução aos avisos de corte e para tornar sua biblioteca compatível com cortes, confira Preparar as bibliotecas .NET para cortes.

Habilitar o corte

  1. Adicione <PublishTrimmed>true</PublishTrimmed> ao arquivo de projeto.

    Essa propriedade vai gerar um aplicativo cortado na publicação autossuficiente. Ela também desativa recursos não compatíveis com corte e mostra avisos de compatibilidade de corte durante a compilação.

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. Em seguida, publique seu aplicativo usando o comando dotnet publish ou o Visual Studio.

Publicar com a CLI

O exemplo a seguir publica o aplicativo para Windows como um aplicativo autossuficiente cortado.

dotnet publish -r win-x64

O corte só é compatível com aplicativos autossuficientes.

<PublishTrimmed> deve ser definido no arquivo de projeto para que os recursos não compatíveis com corte sejam desabilitados durante dotnet build. No entanto, você também pode definir essa opção como um argumento para dotnet publish:

dotnet publish -r win-x64 -p:PublishTrimmed=true

Para obter mais informações, confira Publicar aplicativos .NET com a CLI do .NET.

Publicar com o Visual Studio

  1. No painel Gerenciador de Soluções, clique com o botão direito do mouse no projeto que deseja publicar e selecione Publicar.

    Solution Explorer with a right-click menu highlighting the Publish option.

    Se você ainda não tem um perfil de publicação, siga as instruções para criar um e escolha o tipo de destino Pasta.

  2. Escolha Mais ações>Editar.

    Visual studio publish profile with edit button.

  3. Na caixa de diálogo Configurações de perfil, defina as seguintes opções:

    • Defina o modo de implantação como autossuficiente.
    • Defina o Runtime de destino como a plataforma em que deseja fazer a publicação.
    • Selecione Cortar código não utilizado.

    Escolha Salvar para salvar as configurações e retornar à caixa de diálogo Publicar.

    Profile settings dialog with deployment mode, target runtime, and trim unused assemblies options highlighted.

  4. Escolha Publicar para publicar seu aplicativo cortado.

Para obter mais informações, confira Publicar aplicativos .NET Core com o Visual Studio.

Publicar com Visual Studio para Mac

O Visual Studio para Mac não fornece opções para publicar seu aplicativo. Você precisará publicar manualmente seguindo as instruções da seção Publicar com a CLI. Para obter mais informações, confira Publicar aplicativos .NET com a CLI do .NET.

Confira também