カスタム デザイン バージョンの '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