2010-12-04 17 views
4

最新のMono.Cecilをダウンロードしました。プロジェクトを開始するたびにエラーが表示されます。 mono.cecilを削除して追加すると、それはなくなります。しかし、それは私のプロジェクトを開くたびに行う苦痛です。Mono.Cecil、Missing compiler required member 'System.Runtime.CompilerServices.ExtensionAttribute..ctor'

+0

は、プロジェクトのMonoDevelopのですか? VS用のモノツール?何? –

+0

visual studio 2010 – Will

答えて

4

この問題は、拡張メソッドを内部的に使用するすべての.NET 2.0プロジェクトでよく知られている問題であり、したがって、これを可能にするために内部のSystem.Runtime.CompilerServices.ExtensionAttributeを宣言しています。

.NET 3.5以上を使用している場合は、NET_3_5またはNET_4_0を定義してMono.Cecilをコンパイルするだけで、この問題を回避する方法はさまざまです。 .NET 2をターゲットにしている場合は、幸運にもコンパイルすることができます(一部のコンパイラの内部構造に依存しますが、cscコマンドラインやMSBuildは間違いありません)。そうでない場合、回避策は、2.0 Cecilアセンブリから(その定義を含む)その属性のすべての出来事を取り除くことです(Cecil自体を使用して...)。

私はalready done thisですが、それほど大きな問題ではありません。しかし、私はあなたの問題が違うと感じていますので、使用している/ターゲットとしているMonoバージョンと.NETバージョンについてもう少し詳しくお聞かせください。

+0

私のプロジェクトは.net 4で、mono.cecilを.net 4に変更していくつかの拡張機能を追加しました。その定義を追加しようとします。 – Will

+0

mono.cecilからこの警告に気がつきました。 "定義された型 'System.Runtime.CompilerServices.ExtensionAttribute'はグローバルエイリアスの複数のアセンブリで定義されています; 'path'の定義を使用\t Mono.Cecil" – Will

+2

このエラーは、.NET 4のMono.Cecilをビルドすると消えます。 NET_4_0シンボルが定義されています(プロジェクトプロパティで設定可能)。 https://github.com/JohannesRudolph/cecil/blob/master/System.Runtime.CompilerServices/ExtensionAttribute.csを参照してください。 –

2

私のプロジェクトから "Mono.Cecil.dl"と "Mono.Reflection.dll"への参照を削除してこのエラーを修正しました。

これら2つのファイルにはdb4o v8.0 (an object database)が付属しており、db4oがWindows 7 x64 + .NET 4.0の基本で最適化されていないモードで動作する必要はありません。

0

私も同じ問題に直面しています。エラーSystem.Runtime.CompilerServices.ExtensionAttribute..ctor

私は自分のプロジェクトでNewtonsoft.Json.Net dll(参照)を使用しています。私はNewtonsoft.Json.Net20.dllファイルへの参照を削除し、それを再度追加しました。その後、私のソリューションは再び構築されます。

奇妙だが真実...私のアプリケーションは正常に構築されます。

Error when using extension methods in C#

おかげで、