Compartir vía


IL2026: Los miembros a los que se les atribuye RequiresUnreferencedCode pueden interrumpirse al recortar

Causa

Llamada (o acceso mediante reflexión) a un miembro anotado con RequiresUnreferencedCodeAttribute.

Por ejemplo:

[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();
}

Descripción de la regla

RequiresUnreferencedCodeAttribute indica que el miembro hace referencia a código que el recortador puede quitar.

Algunos ejemplos frecuentes son:

  • Load(String) está marcado como RequiresUnreferencedCode porque el ensamblado que se está cargando puede acceder a los miembros que se han recortado. El recortador quita todos los miembros del marco, excepto los que usa directamente la aplicación, por lo que es probable que, al cargar nuevos ensamblados en tiempo de ejecución, se intente acceder a los miembros que faltan.

  • XmlSerializer está marcado como RequiresUnreferencedCode porque XmlSerializer usa una reflexión compleja para examinar los tipos de entrada. El recortador no puede hacer el seguimiento de la reflexión, por lo que los miembros usados transitivamente por los tipos de entrada se pueden recortar.