Uzyskaj „Błąd wewnętrzny w ewaluatorze wyrażeń” w funkcji „Dodaj zegarek” podczas próby debugowania kodu usługi WCF (MSVS 2013)

114

Kilka dni temu przeniosłem moje rozwiązanie do MSVS 2013. Działa dobrze, z wyjątkiem jednej rzeczy: kiedy próbuję debugować kod mojej usługi WCF, działa, ale gdy chcę obserwować stan dowolnej zmiennej, mówi: „Błąd wewnętrzny w wyrażeniu oceniający ”. Funkcja dodawania zegarka działa normalnie po stronie klienta, ale w kodzie serwisowym jest zepsuta. Próbuję debugować własną usługę WCF działającą na hoście lokalnym. Czy możesz mi pomóc, jak to naprawić?

wprowadź opis obrazu tutaj

Tutaj informacje MSVS: Microsoft Visual Studio Professional 2013 wersja 12.0.30110.00 Aktualizacja 1 Microsoft .NET Framework wersja 4.5.51641 System operacyjny: Windows 8.1

Ceridan
źródło
W MSVS2012 działa dobrze (Microsoft Visual Studio Professional 2012, wersja 11.0.61030.00, aktualizacja 4 Microsoft .NET Framework, wersja 4.5.51641)
Ceridan,
Widzę również tę wiadomość i właśnie zaktualizowałem dane z 2012 do 2013.
Gary
Muszę cofnąć się do 2012, w 2012 działa bez błędów, a 2013 nadal mi się
zepsuł
również otrzymuję ten sam błąd w VS 2013
zulucoda

Odpowiedzi:

228

Może to być błąd w nowym (zarządzanym) silniku debugowania, który jest dostarczany z programem Visual Studio 2013. Spróbuj włączyć zarządzany tryb zgodności (który skutecznie zmienia go w silnik debugowania sprzed 2013 r.), Znajdujący się w obszarze Narzędzia - Opcje - Debugowanie :

Jeśli to rozwiąże problem, sugerowałbym próbę odtworzenia go za pomocą małego projektu, a następnie zgłoszenie tego w Connect , aby można było to naprawić.

@bjhuffine komentuje poniżej, że istnieją inne sposoby włączenia trybu zgodności, bez globalnego wyłączania go (np. dla każdego projektu). Więcej informacji tutaj: https://devblogs.microsoft.com/devops/switching-to-managed-compatibility-mode-in-visual-studio-2013/

Igal Tabachnik
źródło
7
To rozwiązało mój problem z Visual Studio 2015 CTP 6.
Chris Schiffhauer
1
Ta konfiguracja rozwiązała problem, ale narzędzia diagnostyczne przestały działać.
Xepe
6
To rozwiązało mój sam problem w Visual Studio 2015 RTM (i wyłączyło nowe narzędzia diagnostyczne), ale nigdy nie miałem tego problemu w Visual Studio 2013. Muszę to przetestować na moim domowym komputerze i porównać.
ahwm
2
Jesteś geniuszem, przyjacielu! Znalazłem również to, co nie tylko dodaje dalsze wyjaśnienia, ale pokazuje inne sposoby zrobienia tego, jeśli nie chcesz wielkiej globalnej zmiany. blogs.msdn.com/b/visualstudioalm/archive/2013/10/16/…
bjhuffine
11
Wystarczy dodać; jeśli te opcje są wyszarzone, musisz zatrzymać debugowanie;)
Radderz
13

Zgodnie z pytaniem „Błąd wewnętrzny w ewaluatorze wyrażeń” „Użyj zarządzanego trybu zgodności” zatrzymuje „Edytuj i kontynuuj”. Spróbuj zaznaczyć opcję „Użyj starszych ewaluatorów wyrażeń C # i VB” w obszarze Narzędzia - Opcje - Debugowanie .

Michael Freidgeim
źródło
2

Spróbowałem odpowiedzi Igala i to nie zadziałało, ale znalazłem rozwiązanie, które zadziałało. Wyczyściłem zegarek i zacząłem ponownie dodawać elementy. Zauważyłem, że jeśli próbowałem dodać element, który nie znajdował się w bieżącej podrzędnej lub funkcji, wystąpił błąd wewnętrzny.

Rozwiązałem problem, dodając inne elementy z wnętrza ich podrzędnych lub funkcji i ponownie nie było żadnych błędów.

KomArko
źródło
W mojej sytuacji błąd występuje nawet wtedy, gdy dodałem elementy obserwacyjne w zakresie metody, ale pomaga mi to rozwiązanie z „Użyj trybu zarządzanej zgodności”.
Ceridan
0

Odpowiedź Michaela Freidgeima pomogła mi zdebugować mój problem. Ale chcę dodać dodatkowe szczegóły dotyczące przyczyny mojego problemu. Tylko w niewielkim stopniu związane z pytaniem pytającego, ale jego błąd jest wyjątkowo mylący.

Używaliśmy kontrolek RadGrid firmy Telerik z GridDateTimeColumn's. Właściwość MinDate w tych siatkach ma wartość domyślną 01/01/1980, więc jeśli przypiszesz datę do tej kolumny, która jest mniejsza niż data, zostanie wyświetlony ten błąd. Dziwne jest to, że oryginalne wiązanie i wyświetlanie nie powodowało problemu, tylko podczas przechodzenia do innej strony błąd był generowany.

ascriven
źródło