Udostępnij za pośrednictwem


IL2026: Członkowie przypisani elementom RequiresUnreferencedCode mogą ulec awarii podczas przycinania

Przyczyna

Wywoływanie (lub uzyskiwanie dostępu za pośrednictwem odbicia) elementu członkowskiego z adnotacją RequiresUnreferencedCodeAttribute.

Na przykład:

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

Opis reguły

RequiresUnreferencedCodeAttribute wskazuje, że element członkowski odwołuje się do kodu, który może zostać usunięty przez trymer.

Do powszechnych przykładów należą:

  • Load(String) jest oznaczony jako RequiresUnreferencedCode , ponieważ ładowany zestaw może uzyskiwać dostęp do elementów członkowskich, które zostały przycięte. Program trymer usuwa wszystkie elementy członkowskie ze struktury z wyjątkiem tych, które są bezpośrednio używane przez aplikację, więc prawdopodobnie ładowanie nowych zestawów w czasie wykonywania będzie próbowało uzyskać dostęp do brakujących elementów członkowskich.

  • XmlSerializer jest oznaczony jako RequiresUnreferencedCode , ponieważ XmlSerializer używa złożonej odbicia do skanowania typów danych wejściowych. Odbicie nie może być śledzone przez trymer, więc elementy członkowskie przechodnio używane przez typy wejściowe mogą zostać przycięte.