IL2026: Členové atributy RequiresUnreferencedCode mohou při oříznutí přerušit
Příčina
Volání (nebo přístup prostřednictvím reflexe) člena anotovaného pomocí RequiresUnreferencedCodeAttribute.
Příklad:
[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();
}
Popis pravidla
RequiresUnreferencedCodeAttribute označuje, že člen odkazuje na kód, který může být odebrán pomocí zatřihovacího objektu.
K běžným příkladům patří:
Load(String) je označen jako
RequiresUnreferencedCode
, protože načtené sestavení může přistupovat k členům, které byly oříznuty pryč. Zastřižení odebere všechny členy z rozhraní s výjimkou těch, které aplikace používá přímo, takže je pravděpodobné, že načtení nových sestavení za běhu se pokusí o přístup k chybějícím členům.XmlSerializer je označen jako
RequiresUnreferencedCode
, protožeXmlSerializer
ke kontrole typů vstupu používá komplexní reflexi. Odraz nelze sledovat pomocí zastřihovače, takže členové mohou být přechodně využíváni vstupními typy.