9

次のコードがあります.Anyの後にラムダ式の下に赤い線が表示されます(System.Linqバージョン3.5と4.0の間の "あいまいな呼び出し" - どのように私は特定のバージョンを使用するように強制しないSystem.Linqの2つのバージョンを取得することによって曖昧な呼び出しが発生しました

これは、コンパイルし、正常に動作

string[] allowedExtensions = { "PNG", "JPG", "JPEG", "GIF" }; 
string fileExtension = (Path.GetExtension(postedFile.FileName) ?? "NULL").ToUpper().TrimStart(new[] { '.' }); 

if (this.MediaService.FileAllowed(postedFile) 
    && allowedExtensions.Any(e => e == fileExtension)) 
{ ... } 

UPDATE

私は今、全体ですべて(60)のプロジェクトをチェックしました?。ソリューションとすべてのt彼はSystem.dllとSystem.Core.dllへの参照はバージョン4.0です - 3.5からの参照がどこから得られているのか分かりません。

+0

コンパイルして正常に動作していれば、化粧上の問題になりますか?プロジェクトを完全に再構築しましたか? – svick

+0

それは単なる美容上の問題ですが、それでも迷惑です。喜びで再建を試みた... – greg84

+0

Resharperを使いましたか? –

答えて

6

おそらく、異なるバージョンを参照する2つのモジュールがあります。それらの参照をプロジェクトファイルで検索し、整合性(4.0)にします。

+0

こんにちは@Bertrand - ソリューション全体ですべてのプロジェクトをチェックしましたが、System.dllとSystem.Core.dllへの参照はすべてバージョン4.0です。3.5からどこが得られるのかは分かりません。 : – greg84

+0

奇妙な言葉を使用していますか? –

+1

こんにちは@BertrandLeRoy - マシンの再起動のように見えます!非常に奇妙です。私はあなたに答えておきます。 – greg84

10

ReSharperがLinq式を使用していて、 'System.Linq'をまだインポートしていないファイルで、 'Reference System.Core'および 'Import System.Linq'に提供した後、この問題が発生しました。 ReSharperコマンドを実行すると、その一部が失敗したというエラーが表示されます。私のプロジェクトのすべてのLinq式はSystem.Core 3.5と4.0のあいまいでした。 SystemとSystem.Coreのすべての参考文献を見ると、それらは4.0でした。 System.Core(4.0)への参照を削除すると、あいまいなエラーがなくなり、System.Coreがそのプロジェクトの参照リストから消えました。 System.Coreを再追加するために戻ったとき、ソリューションエクスプローラの参照リストに表示されませんでしたが、[参照の追加]ダイアログでチェックされました。チェックを外して再確認したところ、System.Coreが既にプロジェクトで参照されているというエラーが発生しました。私はまだビルドプロセスに影響を与えるかどうかわからないので、私はまだエラーを修正しています。

+6

私はresharperとまったく同じ問題に直面してしまい、同じ結果に終わりました。私はすぐにエラーを見つけたが、この質問を見つけ、最初の答えを読んで、Bertrandの答えに対するコメントを読んだ後にVSを再起動し、それを修正した。再起動直後にビルドが正常に機能しました。 –

+1

@NickLarsenお役立ち情報再起動した後でも、ソリューションエクスプローラの参照リストにSystem.Coreが表示されないが、 'Add Reference to ...'ダイアログにチェックが入っていて、System.Coreのチェックを外して再チェックしようとするとエラーが発生するSystem.Coreは既に追加されています。私はちょうど最初に再起動していたと思う!私がクリーンなビルドになると、これが私にとって永続的な問題であるかどうかを知るでしょう... –