Aracılığıyla paylaş


IL3050: Yerel AOT olarak yayımlarken 'RequiresDynamicCodeAttribute' ile ek açıklamalı üyeleri çağırmaktan kaçının

Neden

Bir uygulamayı Yerel AOT olarak yayımladığınızda (bir projede PublishAot özelliği true olarak ayarlayarak), RequiresDynamicCodeAttribute özniteliğiyle açıklama eklenmiş üyeleri çağırmak, çalışma zamanında özel durumlar (exceptions) ile sonuçlanabilir. Bu öznitelikle işaretlenmiş üyeler, çalışma zamanında dinamik olarak yeni kod oluşturma olanağı gerektirebilir ve Yerel AOT yayımlama modeli, çalışma zamanında yerel kod oluşturmanın bir yolunu sağlamaz.

Kural açıklaması

RequiresDynamicCodeAttribute üyenin çalışma zamanında kod oluşturmayı gerektirebilecek koda başvurduğunu gösterir.

Örnek

// AOT analysis warning IL3050: Program.<Main>$(String[]): Using member 'System.Type.MakeGenericType(Type[])'
// which has 'RequiresDynamicCodeAttribute' can break functionality when AOT compiling. The native code for
// this instantiation might not be available at runtime.
typeof(Generic<>).MakeGenericType(unknownType);

class Generic<T> { }

struct SomeStruct { }

İhlalleri düzeltme

Özniteliğine RequiresDynamicCodeAttribute ek açıklama ekleyen üyeler, Yerel AOT olarak yayımlayan kullanıcılara yararlı bilgiler sağlayan bir iletiye sahiptir. Mevcut kodu özniteliğin iletisine uyarlamayı veya ihlal eden çağrıyı kaldırmayı göz önünde bulundurun.

ile açıklama ekleyen RequiresDynamicCodeAttribute bazı API'ler, belirli bir düzende çağrıldığında uyarı tetiklemez. Daha fazla bilgi için bkz . RequiresDynamicCode olarak işaretlenmiş iç API'ler.