System.Linq:以下方法或属性之间的调用不明确

Pra*_*ale 5 c# linq

有一个旧的 Asp.Net 网站项目,在 VS 2015 中打开,目标是 4.0 FrameWork 版本,当我尝试构建它时,它给出以下错误:

以下方法或属性之间的调用不明确: System.Linq.Enumerable.Contains<TSource>(System.Collections.Generic.IEnumerable<TSource>, TSource)System.Linq.Enumerable.Contains<TSource>(System.Collections.Generic.IEnumerable<TSource>, TSource)

这两个方法签名看起来完全相同。

这是类中的代码:

using System;
using System.Collections.Generic; // Gray out
using System.Linq;
using System.Web; // Gray out
using System.Web.Routing;
using System.Web.UI; // Gray out

public class UrlRoute
{

  public static string RegisterRoutes(string routes)
  {
    string MainUrl = routes;
    string result = "";
    if (MainUrl.Contains('\\')==true)
    {
      result = "CMS"
    }
    return result;
  }
}
Run Code Online (Sandbox Code Playgroud)

项目属性:

参考

框架详细信息:

框架细节

我尝试了 SO 的解决方案,但没有一个有效 [删除 bin 文件夹,检查未解析的引用],不明白错误背后的原因!

编辑:

同样的情况也发生在Last()以下所有扩展方法上System.Linq

错误 CS0121 以下方法或属性之间的调用不明确:“System.Linq.Enumerable.Last(System.Collections.Generic.IEnumerable)”和“System.Linq.Enumerable.Last(System.Collections.Generic.IEnumerable)”

如果需要,愿意分享任何其他配置/代码。

Nen*_*nad 4

您很可能引用了两个版本的System.Linq.dll. 项目应使用 GAC 中的版本,而不是 BIN 中的本地副本。

System.Linq.dll尝试在 C# 项目中查找并删除对的显式引用。

PS 如果解决方案中有多个项目,请确保它们都针对相同版本的 .NET Framework。