9

次のコードがあります。これは、.Any(System.Linqバージョン3.5と4.0の間の「あいまいな呼び出し」のために、ラムダ式の下に波状の赤い線を示しています。特定のバージョンを使用するように強制するにはどうすればよいですか?

コンパイルして正常に実行されます。

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))
{ ... }

更新

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

4

2 に答える 2

10

ReSharper が、Linq 式を使用しているが「System.Linq」をまだインポートしていないファイルで「System.Core を参照」および「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 がプロジェクトによって既に参照されているというエラーが発生しました。まだエラーを修正しているので、これがビルド プロセスに影響するかどうかはわかりません。

于 2012-08-02T12:59:46.967 に答える
6

おそらく、異なるバージョンを参照する 2 つのモジュールがあるでしょう。プロジェクト ファイルでこれらの参照を検索し、一貫性を持たせます (4.0)。

于 2012-02-16T09:33:00.560 に答える