ExtensionAttributeについての奇妙な警告
-
23-08-2019 - |
質問
私は奇妙な警告を取得しています:
所定タイプ「System.Runtime.CompilerServices.ExtensionAttribute」はグローバルエイリアスで複数のアセンブリで定義されています。定義を使用して 'C:\プログラムファイル\リファレンスアセンブリ\マイクロソフト\ Frameworkの\ V3.5の\のSystem.Core.dll'
は行番号が与えられていないがあるので、それはそれは程度上にあるかを把握するのは難しいます。
コンパイラエラーコードは CS1685 の
解決
あなたが事前に.NET 3.5のランタイム上でいくつかのC#3.0の機能を使用するための手段として(正確に同じ名前の)この属性を実装していた誰かのDLL(または独自の)自体を使用していますか? (一般的なトリック)
これは、考えられる原因です。それが正しいもの(GACでMS 1)を使用しているので、あなたが他を追い詰めると、それを削除する必要がありますけれども、これは問題ではありません。
他のヒント
ShuggyCoUkの(正しい)答えに拡大
正直、(GAC、第3部など)に使用されている属性のバージョンは関係ありません。重要なのは、C#/ VBコンパイラが正しい名前といくつかの属性を見つけることができます。属性は、コードには機能的な目的を果たしていません。これは、コンパイラ「ちょっと、これは拡張メソッドである」を伝えるために純粋に存在します。
あなたは安全にこの警告を無視することができます。
私は最善の行動は、問題のDLLを削除しようとしていることをShuggyCoUkに同意します。それはしかし、できないことがあります。
コンパイラが文句を言っていることをあいまいさを解決する別の方法は、参照されたDLLの別名を変更することです。プロジェクトでは、[参照設定]フォルダには、あなたが参照されたDLLをクリックした場合は、エイリアスプロパティが表示されます。デフォルトでは、これはあなたが「グローバル:: SomeNamespace.SomeType」のようなものを行うことを可能にする、「グローバル」です。あなたは、単に何か他のものにエイリアスを変更することができるかもしれません。
これは私がMicrosoft.Scripting.Core.dllを参照するために必要な場合、私が持っていた問題を修正しましたが、それはのMscorlib.dllと競合いくつかの種類が含まれていました。私の代わりに「グローバル」の「第三者」にエイリアスプロパティを変更し、そしてそれは警告を固定します。
私は同じ問題を抱えています。
私の場合は問題がアセンブリMono.Cecilだっます。
私はNHibernateは、自動的にパッケージを参照この参照を追加します追加したときに、、nugetするローカル参照からの移行ます。
この参照を除去し、再び私のプロジェクトをコンパイルした。
それを削除し、幸せに!!
この画像は(ILSpyから採取した http://i.stack.imgur.com/Qyd5o .PNGする)
コンパイラが知っているしないSystem.Runtime.CompilerServices.ExtensionAttribute
これは、cからdefinationを使用しているので:\プログラムファイル\リファレンスアセンブリ\マイクロソフト\ Frameworkの\ V3.5の\のSystem.Core.dllは、 '
あなたの.dll Aは同じextenstionがあるかもしれません使用しています。
私は偶然、.NET 3.5ではなく4.5でIISをインストールすることによって、このエラーを引き起こしました。
修正は、コントロールパネルの「...機能の追加」の後ろに4.5を追加しました。