2013-05-06 26 views
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 TWO上看到System.Linq;一:

R# Intellisense 1

和二:

enter image description here

誰能幫助我跟蹤複製的參考?我可以看的任何地方?我可以使用任何工具?謝謝!

+4

張貼您擁有的程序集引用。 – Nick 2013-05-06 15:11:33

+0

一個是對C#類的引用,另一個是對VB.Net的引用,實際上它沒有重複的引用。 **用你收到的實際錯誤更新你的問題。** – 2013-05-06 15:13:33

+0

@Rhhound我不認爲這裏有任何與VB.net相關的東西。第二個屏幕截圖中的消息是對「Enumerable」類的標準描述。它只提到VB,因爲它使用關鍵字'shared'而不是'static'。 – CodesInChaos 2013-05-06 15:14:25

回答

1

這不一定是答案,但步驟太複雜,無法發表評論。

更新

一些事情嘗試:

首先嚐試在safe mode運行Visual Studio。驗證問題不是由插件引起的。

  1. 看看是否在其他機器上存在這個項目
  2. Reinstall 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. 右鍵單擊項目>選擇「卸載項目」>此時再次右鍵單擊項目選擇「編輯(ProjectName)」。

  2. 現在查找對System.Core的引用。你有多少?它看起來像:

    <Reference Include="System.Core" />

  3. 刪除任何重複引用System.Core程序。

  4. 重新加載項目。如果問題仍然存在...

  5. 刪除對System.Core的引用。通過Assemblies> Framework選項卡重新添加引用(或者我相信VS 2012之前的.NET選項卡)。

  6. 從步驟1開始重新檢查MSBuild,如果問題仍然存在,請將參考的MSBuild以及參考文件夾中的程序集屬性中可用的PATH和RUNTIME VERSION一起發佈。

+0

它只是引用一個,像這樣: 3.5 CMPerez 2013-05-06 15:44:11

+0

@Picacodigos - 你試過其他步驟嗎?什麼是PATH? – 2013-05-06 15:48:23

+0

是的,我做了幾次這個項目的加載和重新加載,並檢查了XML,沒有什麼奇怪的。如果您要求項目屬性的「參考路徑」選項卡,則爲空。目標運行時是.NET 3.5。 – CMPerez 2013-05-06 15:57:59