首页 > 解决方案 > System.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;
  }
}

项目属性:

参考

框架细节:

框架细节

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

编辑:

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

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

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

标签: c#linq

解决方案


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

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

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


推荐阅读