9

我有以下代码,它在 .Any( 之后的 lambda 表达式下显示一条波浪形的红线,因为 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

您可能有两个引用不同版本的模块。在项目文件中搜索这些引用并使它们保持一致(4.0)。

于 2012-02-16T09:33:00.560 回答