A versão personalizada do 'System.Runtime.CompilerServices.ExtensionAttribute' encontrada pelo compilador não é válida

A versão personalizada do 'System.Runtime.CompilerServices.ExtensionAttribute' encontrada pelo compilador não é válida. Os sinalizadores de uso de atributo dele precisam ser definidos para permitir assemblies, classes e métodos.

A versão personalizada do System.Runtime.CompilerServices.ExtensionAttribute que o compilador encontrou não define os sinalizadores de uso de atributo para habilitar a aplicação do atributo para assemblies, métodos e classes. O aplicativo para pelo menos esses três elementos de programa é necessário.

ID do Erro: BC36558

Para corrigir este erro

Exemplo

O exemplo a seguir usa o atributo AttributeUsage para especificar a quais elementos do programa a nova versão do ExtensionAttribute pode se aplicar. O exemplo especifica três membros da enumeração de AttributeTargets: Assembly, Class e Method. A omissão de qualquer um desses elementos causará esse erro.

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

Como alternativa, você pode permitir aplicar ExtensionAttribute a todos os elementos do programa usando o membro All do AttributeTargets.

<AttributeUsage(AttributeTargets.All)>

Excluir a linha AttributeUsage, conforme mostrado no código a seguir, produz o mesmo resultado.

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

Confira também