Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Causa
Al publicar una aplicación como AOT nativo (estableciendo la PublishAot propiedad true en en un proyecto), llamar a los miembros anotados con el RequiresDynamicCodeAttribute atributo podría dar lugar a excepciones en tiempo de ejecución. Los miembros anotados con este atributo pueden requerir la capacidad de crear código nuevo dinámicamente en tiempo de ejecución y el modelo de publicación de AOT nativo no proporciona una manera de generar código nativo en tiempo de ejecución.
Descripción de la regla
RequiresDynamicCodeAttribute indica que el miembro hace referencia al código que podría requerir la generación de código en tiempo de ejecución.
Ejemplo
// 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 { }
Cómo corregir infracciones
Los miembros anotados con el atributo RequiresDynamicCodeAttribute tienen un mensaje que proporciona información útil a los usuarios que publican aplicaciones como AOT nativas. Considere la posibilidad de adaptar el código existente al mensaje del atributo o de quitar la llamada infractora.
Algunas API anotadas con RequiresDynamicCodeAttribute no generan una advertencia cuando se llama con un patrón específico. Para obtener más información, consulte API intrínsecas marcadas como RequireDynamicCode.