这与这个问题有关:Call is ambiguous error using Linq
同样的项目,同样的错误。每次我尝试使用 Linq 的扩展方法时,都会收到有关不明确引用的错误。例如;
listOfThings.Where(x => x.Foo == 1);
不编译并返回错误,而
System.Linq.Enumerable.Where(listOfThings, x => x.Foo == 1);
运行正常。此外,当我编写 System.Linq 时...我在 Resharper 的 Intellisense 上看到两个对 System.Linq 的引用;第一:
第二个:
谁能帮我追踪重复的引用?有什么地方可以看吗?我可以使用任何工具吗?谢谢!
最佳答案
这不一定是答案,但步骤太复杂,无法发表评论。
更新
还有一些尝试:
首先尝试在 safe mode 中运行 visual studio .确认问题不是由插件引起的。
- 查看此项目是否存在于其他机器上
- Reinstall 3.5 .NET 框架(听起来您使用的是 v3.5)
- 查看 GAC 中的内容:
在 visual sstudio 命令提示符下运行
gacutil /l > C:\gac.txt
.检查此文件的内容以查找 System.Core。对于 .NET 3.5,我有一个 System.Core,它看起来像:
System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL
我还有一个 v4.0。我还安装了 .NET 4.5。无论出于何种原因,这都没有向我的机器添加新的 System.Core.dll(根据 MSDN System.Core.dll 在 v4.5 中仍然包含 System.LINQ)。
请打开项目并向我们展示 MSBUILD。您将寻找 System.Core,它是包含 System.LINQ 的程序集。
右键单击项目 > 选择“卸载项目”> 这次再次右键单击项目选择“编辑(项目名称)”。
现在查找对 System.Core 的引用。你有多少?它看起来像吗:
<Reference Include="System.Core" />
删除对 System.Core 的所有重复引用。
重新加载项目。如果问题仍然存在...
删除对 System.Core 的引用。通过 Assemblies > Framework 选项卡(或 .NET 选项卡,我相信在 VS 2012 之前)重新添加引用。
从第 1 步开始重新检查 MSBuild,如果问题仍然存在,请发布引用的 MSBuild 以及引用文件夹中程序集属性中可用的路径和运行时版本。
关于c# - 对删除重复引用一无所知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16401686/