La versione personalizzata di 'System.Runtime.CompilerServices.ExtensionAttribute' trovata dal compilatore non è valida

La versione personalizzata di 'System.Runtime.CompilerServices.ExtensionAttribute' trovata dal compilatore non è valida. I flag di utilizzo degli attributi devono essere impostati per consentire assembly, classi e metodi.

La versione personalizzata di System.Runtime.CompilerServices.ExtensionAttribute trovata dal compilatore non imposta i relativi flag di utilizzo degli attributi per consentire l'applicazione dell'attributo ad assembly, metodi e classi. È necessaria l'applicazione ad almeno questi tre elementi di programma.

ID errore: BC36558

Per correggere l'errore

  • Modificare la definizione dell'attributo per attivare l'applicazione dell'attributo almeno ad assembly, metodi e classi, come illustrato negli esempi seguenti.

  • Usare System.Runtime.CompilerServices.ExtensionAttribute anziché la versione personalizzata.

Esempio

L'esempio seguente usa l'attributo AttributeUsage per specificare a quali elementi del programma è possibile applicare la nuova versione di ExtensionAttribute . L'esempio specifica tre membri dell'enumerazione AttributeTargets : Assembly, Classe Method. L'omissione di uno di questi elementi causerà questo errore.

Namespace System.Runtime.CompilerServices
    <AttributeUsage(AttributeTargets.Assembly Or _
        AttributeTargets.Class Or AttributeTargets.Method)>
    Class ExtensionAttribute
        Inherits System.Attribute
        ' Definitions of methods, fields, and properties.
    End Class
End Namespace

In alternativa, è possibile consentire l'applicazione di ExtensionAttribute a tutti gli elementi del programma usando il membro All di AttributeTargets.

<AttributeUsage(AttributeTargets.All)>

L'eliminazione della riga AttributeUsage , come illustrato nel codice seguente, produce lo stesso risultato.

Namespace System.Runtime.CompilerServices
    Class ExtensionAttribute
        Inherits System.Attribute
        ' Definitions of methods, fields, and properties.
    End Class
End Namespace

Vedi anche