Freigeben über


IL2026: Member mit dem Attribut RequiresUnreferencedCode können beim Kürzen beschädigt werden

Ursache

Aufrufen eines Members (oder Zugreifen über Reflexion), der mit RequiresUnreferencedCodeAttribute kommentiert ist.

Beispiel:

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

Regelbeschreibung

RequiresUnreferencedCodeAttribute gibt an, dass der Member auf Code verweist, der vom Trimmer entfernt werden kann.

Häufige Beispiele sind:

  • Load(String) wird als RequiresUnreferencedCode markiert, da die zu ladende Assembly möglicherweise auf Member zugreift, die entfernt wurden. Der Trimmer entfernt alle Member aus dem Framework, mit Ausnahme derjenigen, die direkt von der Anwendung verwendet werden. Daher ist es wahrscheinlich, dass beim Laden neuer Assemblys zur Laufzeit versucht wird, auf fehlende Member zuzugreifen.

  • XmlSerializer wird als RequiresUnreferencedCode markiert, weil XmlSerializer komplexe Reflexion verwendet, um Eingabetypen zu scannen. Die Reflexion kann nicht vom Trimmer nachverfolgt werden, sodass Member, die transitiv von den Eingabetypen verwendet werden, entfernt werden können.