次の方法で共有


コンパイラによって検出された 'System.Runtime.CompilerServices.ExtensionAttribute' のカスタム設計されたバージョンが有効ではありません

コンパイラによって検出された 'System.Runtime.CompilerServices.ExtensionAttribute' のカスタム設計されたバージョンが有効ではありません。 その属性の使用フラグは、アセンブリ、クラス、およびメソッドを許可するように設定する必要があります。

コンパイラによって検出された System.Runtime.CompilerServices.ExtensionAttribute のカスタム設計バージョンは、アセンブリ、メソッド、およびクラスへの属性の適用を有効にするように、属性使用フラグを設定していません。 少なくともこれら 3 つのプログラム要素への適用が必要です。

エラー ID: BC36558

このエラーを解決するには

  • 次の例に示すように、少なくともアセンブリ、メソッド、およびクラスに属性を適用できるように、属性の定義を変更します。

  • カスタム設計バージョンの代わりに System.Runtime.CompilerServices.ExtensionAttribute を使用します。

次の例では、 AttributeUsage 属性を使用して、 ExtensionAttribute の新しいバージョンがどのプログラム要素に適用可能かを指定します。 この例では、 AttributeTargets 列挙体の 3 つのメンバーである AssemblyClassMethodを指定します。 これらの要素のいずれかがないと、このエラーが発生します。

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

あるいは、 ExtensionAttributeAll メンバーを使用して、 AttributeTargetsをすべてのプログラム要素に適用可能にすることもできます。

<AttributeUsage(AttributeTargets.All)>

次のコードに示すように、 AttributeUsage の行を削除すると同じ結果が生じます。

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

関連項目