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