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
porqueXmlSerializer
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.