Bagikan melalui


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 karena XmlSerializer menggunakan pantulan kompleks untuk memindai jenis input. Pantulan tidak dapat dilacak oleh pemangkas, sehingga anggota yang digunakan secara transitif oleh jenis input dapat dipangkas.