4

这与这个问题有关: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 的两个引用;第一:

R# 智能感知 1

第二个:

在此处输入图像描述

任何人都可以帮我追踪重复的参考吗?有什么地方可以看吗?我可以使用任何工具吗?谢谢!

4

1 回答 1

1

这不一定是答案,但步骤太复杂,无法发表评论。

更新

还有几件事要尝试:

首先尝试在安全模式下运行 Visual Studio 。验证问题不是由插件引起的。

  1. 看看这个项目的其他机器上是否存在问题
  2. 重新安装3.5 .NET 框架(听起来您使用的是 v3.5)
  3. 查看 GAC 中的内容:在视觉 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 的程序集。

  1. 右键单击项目>选择“卸载项目”>这次再次右键单击项目选择“编辑(项目名称)”。

  2. 现在寻找对 System.Core 的引用。你有多少?它看起来像:

    <Reference Include="System.Core" />

  3. 删除对 System.Core 的任何重复引用。

  4. 重新加载项目。如果问题仍然存在...

  5. 删除对 System.Core 的引用。通过“程序集”>“框架”选项卡(或我相信在 VS 2012 之前的 .NET 选项卡)重新添加引用。

  6. 从步骤 1 开始重新检查 MSBuild,如果问题仍然存在,请将引用的 MSBuild 以及引用文件夹中程序集的属性中可用的 PATH 和 RUNTIME VERSION 一起发布。

于 2013-05-06T15:34:49.833 回答