Поделиться через


Найденная компилятором версия System.Runtime.CompilerServices.ExtensionAttribute, определенная пользователем, является недопустимой

Обновлен: Ноябрь 2007

Сообщение об ошибке

Найденная компилятором версия System.Runtime.CompilerServices.ExtensionAttribute, которая создана пользователем, является недопустимой. Его флаги использования атрибутов должны быть установлены для разрешения сборок, классов и методов.
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.

Созданная пользователем версия System.Runtime.CompilerServices.ExtensionAttribute, которую нашел компилятор, не устанавливает флаги использования атрибутов, позволяющих разрешить сборки, методы и классы. По крайней мере для трех программных элементов требуется приложение.

Идентификатор ошибки: BC36558

Исправление этой ошибки

  • Измените определение атрибута таким образом, чтобы разрешить атрибут для применения по крайней мере к сборкам, методам и классам, как показано в следующих примерах.

  • Используйте System.Runtime.CompilerServices.ExtensionAttribute вместо пользовательской версии.

Пример

В следующем примере атрибут AttributeUsage используется, чтобы указать на то, какие программные элементы новой версии ExtensionAttribute можно применить. В примере задаются три члена перечисления AttributeTargets: Assembly, Class и Method. Упущение любого из этих элементов приведет к ошибке.

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

Кроме того, можно разрешить применение ExtensionAttribute ко всем программным элементам с помощью элемента All из AttributeTargets.

    <AttributeUsage(AttributeTargets.All)>

Удаление строки AttributeUsage, как показано в следующем коде, дает тот же результат.

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

См. также

Задачи

Практическое руководство. Определение пользовательских атрибутов

Основные понятия

Общие сведения об атрибутах в Visual Basic

Методы расширения (Visual Basic)

Написание настраиваемых атрибутов

Ссылки

ExtensionAttribute

Другие ресурсы

Пользовательские атрибуты в Visual Basic