2012-02-15 44 views
9

我有下面的代碼,它顯示了.Any之後的lambda表達式下的一條波浪形的紅線。(因爲System.Linq版本3.5和4.0之間的「模糊調用」 - 我怎麼強制使用一個特定版本撿起System.Linq的兩個版本引起的模糊調用

它編譯和運行良好

string[] allowedExtensions = { "PNG", "JPG", "JPEG", "GIF" }; 
string fileExtension = (Path.GetExtension(postedFile.FileName) ?? "NULL").ToUpper().TrimStart(new[] { '.' }); 

if (this.MediaService.FileAllowed(postedFile) 
    && allowedExtensions.Any(e => e == fileExtension)) 
{ ... } 

UPDATE

現在我已經檢查了所有(60)項目在整個?解決方案和所有噸他引用System.dll和System.Core.dll是4.0版本 - 我真的不明白它從哪裏得到3.5的引用。

+0

如果它編譯並運行良好,只是一個美容問題呢?你有沒有嘗試完全重建項目? – svick 2012-02-16 13:30:48

+0

這只是一個美容問題,但仍然很煩人。嘗試重建沒有喜悅... – greg84 2012-02-16 16:46:37

+0

你使用Resharper? – 2012-08-07 20:36:09

回答

6

您可能有兩個引用不同版本的模塊。在項目文件中搜索這些引用並使其一致(4.0)。

+0

嗨@Bertrand - 我已經檢查了整個解決方案中的所有項目,所有對System.dll和System.Core.dll的引用都是4.0版 - 我真的不明白它從哪裏獲得3.5! :( – greg84 2012-02-16 10:12:20

+0

奇怪,你的使用陳述看起來像什麼? – 2012-02-16 22:07:23

+1

Hi @BertrandLeRoy - 看起來像機器的重新啓動做了詭計!非常奇怪,我會給你答案,因爲這是我在面對問題。謝謝你的幫助。 – greg84 2012-02-17 08:55:13

10

在ReSharper提供給'引用System.Core'和'import System.Linq'的文件中,當我使用Linq表達式但尚未導入'System.Linq'時,我遇到了這個問題。當我執行ReSharper命令時,出現了部分錯誤。然後,我的項目中的所有Linq表達式在System.Core 3.5和4.0之間都是不明確的。看看我所有的系統和System.Core參考,他們是4.0。刪除對System.Core(4.0)的引用導致歧義錯誤消失,並使System.Core從該項目的引用列表中消失。當我回去重新添加System.Core時,雖然它沒有出現在我的解決方案資源管理器中的引用列表中,但它在「添加引用」對話框中進行了檢查。嘗試在那裏取消檢查,然後重新檢查它是否導致System.Core已被我的項目引用的錯誤。我仍在修復錯誤,所以我不知道這是否會影響構建過程。

+6

剛纔我碰到了與resharper完全相同的問題,並以相同的結果結束。儘管我馬上搜索了這個錯誤,但是發現了這個問題,讀了第一個答案,在閱讀了關於Bertrand回答的評論並重新解決了這個問題之後,重新啓動了VS。在重新啓動後,構建立即工作得很好。 – 2012-08-02 15:42:49

+1

@NickLarsen有用。即使在重新啓動後,我仍然有我的錯誤,其中System.Core沒有出現在解決方案資源管理器的引用列表中,但出現在「添加引用到...」對話框中,並嘗試取消選中並重新檢查System.Core,結果出現錯誤System.Core已被添加。我希望我剛剛開始重新啓動!當我得到一個乾淨的版本時,我會發現這對我是一個持久的問題... – 2012-08-02 21:19:21