Die benutzerdefinierte Version von 'System.Runtime.CompilerServices.ExtensionAttribute', die vom Compiler gefunden wurde, ist nicht gültig

Aktualisiert: November 2007

Fehlermeldung

Die benutzerdefinierte Version von 'System.Runtime.CompilerServices.ExtensionAttribute', die vom Compiler gefunden wurde, ist nicht gültig. Die Attributverwendungsflags müssen festgelegt werden, um Assemblys, Klassen und Methoden zuzulassen.
The custom-designed version of 'System.Runtime.CompilerServices.ExtensionAttribute' found by the compiler is not valid. Its attribute usage flags must be set to allow assemblies, classes, and methods.

Die benutzerdefinierte Version von System.Runtime.CompilerServices.ExtensionAttribute, die der Compiler gefunden hat, legt die Attributverwendungsflags nicht auf die Aktivierung der Attributanwendung auf Assemblys, Methoden und Klassen fest. Anwendung auf mindestens drei Programmelemente ist erforderlich.

Fehler-ID: BC36558

So beheben Sie diesen Fehler

  • Ändern Sie die Attributdefinition, um die Attributanwendung mindestens auf Assemblys, Methoden und Klassen zu aktivieren, wie in den folgenden Beispielen gezeigt.

  • Verwenden Sie System.Runtime.CompilerServices.ExtensionAttribute anstelle der benutzerdefinierten Version.

Beispiel

Im folgenden Beispiel wird das AttributeUsage-Attribut verwendet, um anzugeben, auf welches Programmelement die neue Version von ExtensionAttribute angewendet werden kann. Im Beispiel werden drei Member der AttributeTargets-Enumeration angegeben: Assembly, Class und Method. Die Auslassung eines dieser Elemente verursacht diesen Fehler.

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

Wahlweise können Sie die Anwendung von ExtensionAttribute auf alle Programmelemente mithilfe des All-Members von AttributeTargets zulassen.

    <AttributeUsage(AttributeTargets.All)>

Das Löschen der AttributeUsage-Zeile erzeugt das gleiche Ergebnis, wie im folgenden Code dargestellt.

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

Siehe auch

Aufgaben

Gewusst wie: Definieren eigener Attribute

Konzepte

Übersicht über Attribute in Visual Basic

Erweiterungsmethoden (Visual Basic)

Verfassen von benutzerdefinierten Attributen

Referenz

ExtensionAttribute

Weitere Ressourcen

Benutzerdefinierte Attribute in Visual Basic