2013-02-20 12 views
11

Następujący błąd pojawia się sporadycznie (pozornie losowo) w mojej aplikacji internetowej. Używamy Windows Server 2008R2, IIS 7.5, MVC3, .NET 4.5.Okresowe wyświetlanie błędu ASP.NET CS0656: Brak wymaganego elementu kompilatora

Compiler Error

To ten sam błąd za każdym razem: CS0656: Brakujące kompilatora wymaganego członka 'Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation'

W przypadku wystąpienia tego błędu, może brać niczego od A zrestartuj pulę aplikacji, ponownie zainstaluj naszą aplikację, aby ją naprawić.

Błąd występuje na zupełnie nowych obrazach maszyn wirtualnych (brak wcześniejszej instalacji naszego oprogramowania), a także na komputerach, na których wcześniej było zainstalowane nasze oprogramowanie. Błąd może wystąpić przy pierwszym uruchomieniu aplikacji lub gdy aplikacja została wystarczająco długo pozostawiona na puli aplikacji IIS do odtworzenia procesu roboczego (tak się wydaje).

To staje się naprawdę trudne, ponieważ wykonałem mnóstwo badań nad tym błędem i próbowałem wielu rozwiązań, bez powodzenia. Częstotliwość, z jaką wystąpił błąd, spowodowała, że ​​bardzo trudno jest rozwiązać problem. Dowolny wgląd w tę kwestię lub pomysły na temat możliwych rozwiązań byłyby bardzo mile widziane. Jestem gotów wypróbować prawie wszystko w tym momencie.

+0

1) Czy możesz dołączyć do debuggera jedną z testowych maszyn wirtualnych i spowodować awarię? 2) Czy korzystasz z DLR? Przeglądając źródło i dokumentację BCL, wydaje się, że nazwa typu jest powiązana z operacjami dynamicznymi. A może to wykorzystanie DLR przez MVC? –

+0

Czy możesz sprawdzić, jaka wersja Microsoft.CSharp.dll jest używana (określić ścieżkę za pomocą narzędzia takiego jak procexp), otworzyć ją za pomocą narzędzia takiego jak .NET Reflector i sprawdzić, czy istnieje statyczna metoda BinaryOperation? Może to być problem z wersją (kompilator oczekuje nowszej wersji Microsoft.CSharp.dll) –

+0

Czy używasz dynamicznych funkcji językowych C#? W każdym razie wygląda na to, że uszkodzony jest CLR. –

Odpowiedz

0

Try Forest Cheng Answer:

Jaka wersja .NET Framework jest Twój? Składniki wykonawcze ASP.NET MVC 3 wymagają .NET Framework w wersji 4 i Visual Studio 2010 lub Visual Web Developer 2010 Express. Chcesz więcej informacji, spójrz na ASP.NET MVC 3 Release Notes.

Błąd kompilatora CS0656 mogą być spowodowane przez problemy follow:

  1. Twoja instalacja plików wykonywalnych języka wspólnego jest uszkodzony.

  2. Masz odwołanie do zestawu, który definiuje typ, który znajduje się również we wspólnym środowisku wykonawczym języka. Jednak typ twojego zespołu nie jest zdefiniowany tak, jak oczekuje kompilator C#.

Sprawdź więc swoje referencje, aby upewnić się, że używasz poprawnej wersji wspólnego środowiska uruchomieniowego języka.

0

My Kiedyś te błędy kompilacji pojawiały się przypadkowo w przeszłości dawno temu z .net 1 i później. Wymagało to usunięcia zawartości tymczasowego folderu asp.net i znalezienia innych zbierackich bibliotek DLL, nawet w pamięci podręcznej studia wizualnego. Ogólnie rzecz biorąc, spowoduje to przepłukanie tymczasowego folderu asp.net.

Upewnij się, że wszystkie biblioteki dll - folder bin są oczywiste i pamiętaj, że biblioteki DLL są wykonywane z katalogu shadow.Dlatego przypominam sobie (również z odległej pamięci), że istnieje połączenie z domyślną aplikacją, do której ładowane są zespoły, zwłaszcza jeśli następnie ładujesz "ten sam zespół", ale z innej lokalizacji pliku.

Powiązane problemy