9

Mam następujący kod, który pokazuje falisto czerwoną linię pod wyrażeniem lambda po. Any (z powodu "niejednoznacznego wywołania" między wersjami 3.5. i 4.0 systemu System.Linq - w jaki sposób mogę zmusić go do używania konkretnej wersjiNiejednoznaczna inwokacja spowodowana przez odebranie dwóch wersji System.Linq

To kompiluje i działa poprawnie

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:

mam sprawdzone wszystkie (60) projekty w całej?. rozwiązanie i wszystkie t on odwołuje się do System.dll i System.Core.dll są w wersji 4.0 - Naprawdę nie mogę zrozumieć, skąd jest odniesienie do 3.5 z.

+0

Jeśli kompiluje się i działa dobrze, czy jest to po prostu kosmetyczny problem? Czy próbowałeś już w pełni odbudować projekt? – svick

+0

To tylko kosmetyczny problem, ale nadal denerwujący. Próbowałem odbudowy bez radości ... – greg84

+0

Czy używasz Resharpera? –

Odpowiedz

6

Prawdopodobnie masz dwa moduły odwołujące się do różnych wersji. Wyszukaj pliki projektu dla tych odniesień i spójrz je (4.0).

+0

Hi @Bertrand - Sprawdziłem wszystkie projekty w całym rozwiązaniu i wszystkie odniesienia do System.dll i System.Core.dll są w wersji 4.0 - Naprawdę nie mogę zrozumieć, skąd się bierze 3,5! :( – greg84

+0

Weird: Jak wyglądają twoje instrukcje użycia? –

+1

Hi @BertrandLeRoy - wygląda na to, że restart maszyny zrobił sztuczkę! Bardzo dziwne, dam ci odpowiedź, ponieważ to pierwsza rzecz, którą zrobiłem w konfrontacji z problem: dziękuję za pomoc – greg84

10

Miałem ten problem po tym, jak ReSharper zaoferował "odniesienie do System.Core" i "import System.Linq" w pliku, w którym używałem wyrażenia Linq, ale jeszcze nie zaimportowałem "System.Linq". Kiedy wykonałem polecenie ReSharper, dostałem błąd, że część z nich zawiodła. Wtedy wszystkie wyrażenia Linq w moim projekcie były niejednoznaczne między System.Core 3.5 i 4.0. Patrząc na wszystkie moje odniesienia do System i System.Core, były to 4.0. Usunięcie odwołania do System.Core (4.0) spowodowało zniknięcie błędów wieloznaczności i spowodowało, że SystemCore zniknął z listy odniesień dla tego projektu. Kiedy wróciłem, aby ponownie dodać System.Core, chociaż nie pojawiło się ono na mojej liście odniesień w Eksploratorze rozwiązań, zostało to zaznaczone w oknie dialogowym "Dodaj odniesienie do". Próba anulowania jej sprawdzenia, a następnie ponownego sprawdzenia, spowodowała błąd, który systemCore odwołuje się już do mojego projektu. Nadal naprawiam błędy, więc nie wiem, czy wpłynie to na proces tworzenia.

+6

W tym samym problemie spotkałem się z resharperem i skończyłem z tym samym wynikiem. Natychmiast zgłosiłem się do błędu, znalazłem to pytanie, przeczytałem pierwszą odpowiedź, ponownie uruchomiłem VS po przeczytaniu komentarzy na temat odpowiedzi Bertranda i to naprawiło. Kompilacja działała dobrze od razu po ponownym uruchomieniu. –

+1

@NickLarsen dobrze wiedzieć. Nawet po ponownym uruchomieniu nadal mam błąd, gdy System.Core nie pojawia się na liście referencji Eksploratora rozwiązań, ale pojawia się zaznaczone w oknie dialogowym "Dodaj odniesienie do ...", a próba odznaczenia i ponownej kontroli System.Core powoduje błąd System.Core jest już dodany. Szkoda, że ​​nie poszłam z restartem na początku! Kiedy dojdę do czystej budowy, dowiem się, czy jest to dla mnie trwały problem ... –

Powiązane problemy