Partager via


IL2026 : Les membres attribués avec RequiresUnreferencedCode peuvent s’interrompre lors de la réduction

La cause

Appeler (ou accéder en utilisant la réflexion) un membre annoté avec RequiresUnreferencedCodeAttribute.

Par exemple:

[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();
}

Description de la règle

RequiresUnreferencedCodeAttribute indique que le membre fait référence au code qui est susceptible d'être supprimé par le découpeur.

Voici quelques exemples courants :

  • Load(String) est marqué comme RequiresUnreferencedCode étant donné que l’assembly chargé peut accéder aux membres qui ont été supprimés. L'outil de réduction supprime tous les membres du framework à l'exception de ceux directement utilisés par l'application. Il est probable que le chargement de nouvelles assemblies lors de l’exécution tente d’accéder à des membres manquants.

  • XmlSerializer est marqué comme RequiresUnreferencedCode en raison de l'utilisation par XmlSerializer d'une réflexion complexe pour analyser les types d’entrée. La réflexion ne peut pas être suivie par le découpeur, donc les membres utilisés de manière transitive par les types d'entrée peuvent être supprimés.