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

更新 : 2007 年 11 月

エラー メッセージ

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

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

エラー ID: BC36558

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

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

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

使用例

次の例では、AttributeUsage 属性を使用して、新しいバージョンの ExtensionAttribute を適用できるプログラム要素を指定しています。この例では、AttributeTargets 列挙型の 3 つのメンバである Assembly、Class、および Method を指定しています。3 つの要素のいずれか 1 つでも省略すると、このエラーが発生します。

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

または、AttributeTargets の All メンバを使用して、すべてのプログラム要素に ExtensionAttribute を適用できるようにしてもかまいません。

    <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 におけるカスタム属性