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
, carXmlSerializer
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.