Partage via


IL2026 : Les membres attribués avec RequiresUnreferencedCode peuvent s’arrêter lors du découpage

Cause

Appel (ou accès via la réflexion) d’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 peut être supprimé par l’outil de découpage.

Voici quelques exemples communs :

  • Load(String) est marqué comme RequiresUnreferencedCode, car l’assembly chargé peut accéder aux membres qui ont été découpés. L’outil de découpage supprime tous les membres de l’infrastructure à l’exception des membres directement utilisés par l’application. Il est donc probable que le chargement de nouveaux assemblys au moment de l’exécution tente d’accéder aux membres manquants.

  • XmlSerializer est marqué comme RequiresUnreferencedCode, car XmlSerializer utilise une réflexion complexe pour analyser les types d’entrée. La réflexion ne peut pas être suivie par l’outil de découpage, donc les membres transitivement utilisés par les types d’entrée peuvent être découpés.