IL2026: Anggota yang dikaitkan dengan RequiresUnreferencedCode dapat rusak saat pemangkasan
Penyebab
Memanggil (atau mengakses melalui refleksi) anggota yang dianotasi dengan RequiresUnreferencedCodeAttribute.
Misalnya:
[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();
}
Deskripsi aturan
RequiresUnreferencedCodeAttribute menunjukkan bahwa anggota mereferensikan kode yang dapat dihapus oleh pemangkas.
Contoh umumnya termasuk:
Load(String) ditandai sebagai
RequiresUnreferencedCode
karena Assembly yang sedang dimuat dapat mengakses anggota yang telah dipangkas. Pemangkas menghapus semua anggota dari kerangka kerja kecuali yang langsung digunakan oleh aplikasi, sehingga kemungkinan pemuatan Rakitan baru pada waktu proses akan mencoba mengakses anggota yang hilang.XmlSerializer ditandai sebagai
RequiresUnreferencedCode
karenaXmlSerializer
menggunakan pantulan kompleks untuk memindai jenis input. Pantulan tidak dapat dilacak oleh pemangkas, sehingga anggota yang digunakan secara transitif oleh jenis input dapat dipangkas.