Dela via


IL2026: Medlemmar som tillskrivs RequiresUnreferencedCode kan brytas vid trimning

Orsak

Anropa (eller komma åt via reflektion) en medlem som kommenterats med RequiresUnreferencedCodeAttribute.

Till exempel:

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

Regelbeskrivning

RequiresUnreferencedCodeAttribute anger att medlemmen refererar till kod som kan tas bort av trimmern.

Vanliga exempel:

  • Load(String) markeras som eftersom sammansättningen som RequiresUnreferencedCode läses in kan komma åt medlemmar som har trimmats bort. Trimmern tar bort alla medlemmar från ramverket förutom de som används direkt av programmet, så det är troligt att inläsning av nya sammansättningar vid körning kommer att försöka komma åt saknade medlemmar.

  • XmlSerializer markeras som RequiresUnreferencedCode eftersom XmlSerializer använder komplex reflektion för att skanna indatatyper. Reflektionen kan inte spåras av trimmern, så medlemmar som transitivt används av indatatyperna kan trimmas bort.