有一个旧的 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)”
如果需要,愿意分享任何其他配置/代码。
您很可能引用了两个版本的System.Linq.dll. 项目应使用 GAC 中的版本,而不是 BIN 中的本地副本。
System.Linq.dll尝试在 C# 项目中查找并删除对的显式引用。
PS 如果解决方案中有多个项目,请确保它们都针对相同版本的 .NET Framework。