2012-02-15 16 views
9

'un iki sürümünün toplanmasının neden olduğu belirsiz çağrı, System.Linq 3.5 ve 4.0 sürümleri arasındaki bir "belirsiz çağrılma" nedeniyle .Any sonra lambda ifadesinin altında bir dalgalı kırmızı çizgi gösteren aşağıdaki kod var. - nasıl belli sürümünü kullanmaya zorlamak yokSystem.Linq

Bu derler ve iyi çalışır

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: Şimdi tamamında bütün (60) projelerini kontrol ettim

?. çözüm ve tüm t o System.dll ve System.Core.dll başvuruları 4.0 sürümdür - gerçekten 3.5'den itibaren referans aldığını anlayamıyorum.

+0

Düzeltir ve iyi çalışırsa, o zaman sadece kozmetik bir sorun olur mu? Projeyi tamamen yeniden inşa etmeyi denediniz mi? – svick

+0

Sadece kozmetik bir problem, ama yine de can sıkıcı. Sevinç olmadan yeniden inşayı denediniz ... – greg84

+0

Resharper'ı mı kullanıyordunuz? –

cevap

6

Muhtemelen farklı sürümleri referans alan iki modülünüz vardır. Bu referanslar için proje dosyalarını arayın ve tutarlılığa getirin (4.0).

+0

Merhaba @Bertrand - Tüm projedeki tüm çözümleri kontrol ettim ve System.dll ile System.Core.dll dosyasının tüm referansları 4.0 versiyonudur - Gerçekten 3.5'ten nereden geldiğini anlayamıyorum! :( – greg84

+0

Garip: Kullandığınız ifadeler neye benziyor? –

+1

Merhaba @BertrandLeRoy - makinenin yeniden başlatılması gibi görünüyor hile yaptı! Çok garip. Size cevap vereceğim ilk şey yaptığım gibi Yardımınız için teşekkür ederiz .. – greg84

10

Bu sorun, ReSharper'ın bir Linq ifadesi kullandığım ancak 'System.Linq' dosyasını henüz almadığım bir dosyada 'System.Core' ve 'import System.Linq' referanslarını sunmasının ardından bu sorunu yaşadım. ReSharper komutunu çalıştırdığımda, bir kısmının başarısız olduğu konusunda bazı hatalar aldım. Sonra projemdeki tüm Linq ifadeleri System.Core 3.5 ve 4.0 arasında belirsiz oldu. Tüm Sistem ve System.Core referanslarına baktığımda, onlar 4.0 idi. Referansı System.Core (4.0) 'a kaldırmak, belirsizlik hatalarının ortadan kalkmasına neden oldu ve System.Core bu proje için referanslar listesinden kayboldu. System.Core'u yeniden eklemeye gittiğimde, Çözüm Gezgini'ndeki referanslar listemde görünmese de, 'Referansa Ekle' iletişim kutusundan kontrol edildi. Orada kontrol etmek ve daha sonra yeniden kontrol etmeye çalıştığım System.Core zaten benim projem tarafından başvurulan bir hatayla sonuçlandı. Hala hataları düzeltirim, bu yüzden bu işlem sürecini etkileyip etkilemeyeceğini bilmiyorum.

+6

Hemen hemen aynı sorunla yeniden karşılaştım ve aynı sonuçla bitti. Yine de hatayı araştırdım, bu soruyu buldum, ilk cevabı oku, Bertrand'ın cevabı hakkındaki yorumları okuduktan sonra VS'yi yeniden başlattım ve düzeltdim. Derleme, yeniden başlatmanın hemen ardından gayet iyi çalıştı. –

+1

@NickLarsen bilmek güzel. Yeniden başlatıldıktan sonra bile System.Core'un Solution Explorer'in referans listesinde görünmediği yerde hatam var, ancak 'Add Reference to ...' iletişim kutusunda işaretli olarak görünür ve System.Core'un işaretini kaldırın ve yeniden kontrol edin. System.Core zaten eklenmiştir. Keşke başlangıçta sadece yeniden başlatma ile gitmiş olsaydım! Temiz bir yapıya geçtiğimde bunun benim için kalıcı bir sorun olup olmadığını öğreneceğim. –