Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As propriedades e os itens do MSBuild descritos neste artigo influenciam o comportamento de implantações cortadas e independentes. Algumas das opções mencionam ILLink
, que é o nome da ferramenta subjacente que implementa o corte. Para obter mais informações sobre a ferramenta subjacente, consulte a Documentação do filtro.
O corte com PublishTrimmed
foi introduzido no .NET Core 3.0. As outras opções estão disponíveis no .NET 5 e versões posteriores.
Habilitar a filtragem
<PublishTrimmed>true</PublishTrimmed>
Habilite a filtragem durante a publicação. Essa configuração também desativa os recursos incompatíveis com o corte e permite a análise de corte durante a compilação. Em aplicativos .NET 8 e posteriores, essa configuração também habilita a associação de configuração e os geradores de origem de representante de solicitação.
Observação
Se você especificar o corte como habilitado na linha de comando, sua experiência de depuração será diferente e você poderá encontrar bugs adicionais no produto final.
Coloque essa configuração no arquivo de projeto para garantir que a configuração se aplique durante dotnet build
, não apenas dotnet publish
.
Essa configuração também habilita o analisador Roslyn de compatibilidade de corte e desabilita os recursos incompatíveis com o corte.
Analisador Roslyn
A configuração PublishTrimmed
no .NET 6+ também habilita um analisador Roslyn que mostra um conjunto limitado de avisos de análise. Você também pode habilitar ou desabilitar o analisador independentemente de PublishTrimmed
.
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
Habilite um analisador Roslyn para um subconjunto de avisos de análise de corte.
Suprimir avisos
Você pode suprimir códigos de aviso individuais usando as propriedades habituais do MSBuild respeitadas pela cadeia de ferramentas, incluindo NoWarn
, WarningsAsErrors
, WarningsNotAsErrors
e TreatWarningsAsErrors
. Há uma opção adicional que controla o comportamento de aviso como erro do ILLink de forma independente:
<ILLinkTreatWarningsAsErrors>false</ILLinkTreatWarningsAsErrors>
Não trate os avisos do ILLink como erros. Isso pode ser útil para evitar transformar avisos de análise de corte em erros ao tratar avisos do compilador como erros globalmente.
Mostrar avisos detalhados
No .NET 6+, a análise de corte produz no máximo um aviso para cada assembly proveniente de um PackageReference
, indicando que os internos do assembly não são compatíveis com o corte. Você também pode exibir avisos individuais para todos os assemblies:
<TrimmerSingleWarn>false</TrimmerSingleWarn>
Exiba todos os avisos detalhados, em vez de recolhê-los em um único aviso por assembly.
Remover símbolos
Os símbolos geralmente são cortados para corresponder aos assemblies cortados. Você também pode remover todos os símbolos:
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
Remova os símbolos do aplicativo cortado, incluindo PDBs inseridos e arquivos PDB separados. Isso se aplica ao código do aplicativo e a todas as dependências com símbolos.
O SDK também possibilita desabilitar o suporte ao depurador usando a propriedade DebuggerSupport
. Quando o suporte ao depurador está desabilitado, o corte remove os símbolos automaticamente (TrimmerRemoveSymbols
o padrão será true).
Recursos da biblioteca da estrutura de corte
Diversas áreas de recursos das bibliotecas de estrutura possuem diretivas de filtro que possibilitam a remoção do código para recursos desabilitados.
Propriedade do MSBuild | Descrição |
---|---|
AutoreleasePoolSupport |
Quando definido como false , remove o código que cria pools de lançamento automático em plataformas com suporte.
false é o padrão para o SDK do .NET. |
DebuggerSupport |
Quando definido como false , remove o código que permite melhores experiências de depuração. Essa configuração também remove símbolos. |
EnableUnsafeBinaryFormatterSerialization |
Quando definido como , remove o false suporte à serialização BinaryFormatter. Para obter mais informações, consulte Os métodos de serialização BinaryFormatter estão obsoletos e a implementação BinaryFormatter in-box foi removida e sempre é lançada. |
EnableUnsafeUTF7Encoding |
Quando definido como , remove o false código de codificação UTF-7 inseguro. Para obter mais informações, consulte os Caminhos de código UTF-7 obsoletos. |
EventSourceSupport |
Quando definido como false , remove o código e a lógica relacionados ao EventSource. |
Http3Support (.NET 10+) |
Quando definido como false , remove o código relacionado ao suporte para HTTP/3 em System.Net.Http. |
HttpActivityPropagationSupport |
Quando definido como false , remove o código relacionado ao suporte de diagnóstico para System.Net.Http. |
InvariantGlobalization |
Quando definido como true , remove o código e os dados específicos da globalização. Para obter mais informações, confira o Modo invariável. |
MetadataUpdaterSupport |
Quando definido como false , remove a lógica específica da atualização de metadados relacionada ao recarregamento dinâmico. |
MetricsSupport |
Quando definido como false , remove o suporte para System.Diagnostics.Metrics instrumentação. |
StackTraceSupport (.NET 8+) |
Quando definido como false , remove o suporte para gerar rastreamentos de pilha (por exemplo, Environment.StackTrace ou Exception.ToString) pelo tempo de execução. A quantidade de informações removidas das cadeias de caracteres de rastreamento de pilha pode depender de outras opções de implantação. Essa opção não afeta os rastreamentos de pilha gerados pelos depuradores. |
UseNativeHttpHandler |
Quando definido como true , usa a implementação de plataforma padrão para HttpMessageHandler Android e iOS e remove a implementação gerenciada. |
UseSizeOptimizedLinq (.NET 10+) |
Quando definido como true , remove algumas das otimizações de taxa de transferência no LINQ que afetam negativamente o tamanho do aplicativo.
true O padrão é com PublishAot ; talvez não seja possível compilar nativamente alguns aplicativos com essa propriedade definida como false . |
UseSystemResourceKeys |
Quando definido como true , remove mensagens de exceção para System.* assemblies. Quando uma exceção é lançada de um System.* assembly, a mensagem é uma ID de recurso simplificada em vez da mensagem completa. |
XmlResolverIsNetworkingEnabledByDefault (.NET 8+) |
Quando definido como false , remove o suporte para resolver URLs que não são de arquivo no System.Xml. Há suporte apenas para a resolução do sistema de arquivos. |
Essas propriedades fazem com que o código relacionado seja cortado e também desabilite os recursos pelo arquivo runtimeconfig. Para obter mais informações sobre essas propriedades, incluindo as opções de runtimeconfig correspondentes, consulte as opções de recurso. Alguns SDKs podem ter valores padrão para essas propriedades.
Recursos da estrutura desabilitados no corte
Os recursos a seguir são incompatíveis com o corte porque exigem código que não é referenciado estaticamente. Esses recursos são desativados por padrão em aplicativos cortados.
Aviso
A habilitação desses recursos será por sua conta e risco. É provável que eles interrompa aplicativos cortados sem trabalho adicional para preservar o código referenciado dinamicamente.
<BuiltInComInteropSupport>
O suporte interno para COM está desabilitado.
<CustomResourceTypesSupport>
Não há suporte para o uso de tipos de recursos personalizados. Os caminhos de código do ResourceManager que usam reflexão para tipos de recursos personalizados são cortados.
<EnableCppCLIHostActivation>
A ativação do host C++/CLI está desabilitada.
<EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization>
O uso de DesigntimeLicenseContextSerializer da serialização
BinaryFormatter
está desabilitado.<StartupHookSupport>
Não há suporte para a execução de código antes
Main
de withDOTNET_STARTUP_HOOKS
. Para obter mais informações, consulte gancho de inicialização do host.