Compartilhar via


IL2026: membros atribuídos com RequiresUnreferencedCode poderão ser interrompidos durante o corte

Causa

Chamando (ou acessando via reflexão) um membro anotado com RequiresUnreferencedCodeAttribute.

Por exemplo:

[RequiresUnreferencedCode("Use 'MethodFriendlyToTrimming' instead", Url="http://help/unreferencedcode")]
void MethodWithUnreferencedCodeUsage()
{
}

void TestMethod()
{
    // IL2026: Using method 'MethodWithUnreferencedCodeUsage' which has 'RequiresUnreferencedCodeAttribute'
    // can break functionality when trimming application code. Use 'MethodFriendlyToTrimming' instead. http://help/unreferencedcode
    MethodWithUnreferencedCodeUsage();
}

Descrição da regra

RequiresUnreferencedCodeAttribute indica que o membro faz referência ao código que poderá ser removido pelo corte.

Exemplos comuns incluem:

  • Load(String) é marcado como RequiresUnreferencedCode porque o Assembly que está sendo carregado poderá acessar os membros que foram cortados. O corte removerá todos os membros da estrutura, exceto os usados diretamente pelo aplicativo, portanto, é provável que o carregamento de novos assemblies em tempo de execução tente acessar os membros ausentes.

  • XmlSerializer é marcado como RequiresUnreferencedCode porque XmlSerializer usa a reflexão complexa para verificar tipos de entrada. A reflexão não poderá ser rastreada pelo corte, portanto, os membros usados transitivamente pelos tipos de entrada poderão ser cortados.