Obtenha “Erro interno no avaliador de expressão” na função “Adicionar observação” ao tentar depurar o código de serviço WCF (MSVS 2013)

114

Poucos dias atrás, mudei minha solução para o MSVS 2013. Funciona bem, exceto uma coisa: quando tento depurar o código do meu serviço WCF, ele funciona, mas quando desejo observar o estado de qualquer variável, ele diz: "Erro interno na expressão avaliador ". A função Adicionar relógio funciona normalmente no lado do cliente, mas no código de serviço está quebrada. Estou tentando depurar meu próprio serviço WCF em execução no localhost. Você poderia me ajudar, como consertar isso?

insira a descrição da imagem aqui

Aqui, informações do MSVS: Microsoft Visual Studio Professional 2013 Versão 12.0.30110.00 Atualização 1 Microsoft .NET Framework Versão 4.5.51641 SO: Windows 8.1

Ceridan
fonte
No MSVS2012 ele funciona bem (Microsoft Visual Studio Professional 2012 Versão 11.0.61030.00 Atualização 4 Microsoft .NET Framework Versão 4.5.51641)
Ceridan
Também estou vendo essa mensagem e acabei de atualizar de 2012 para 2013.
Gary,
Tenho que reverter para 2012, em 2012 funciona sem erros, e 2013 ainda está quebrado para mim
Ceridan
também recebendo o mesmo erro no VS 2013
zulucoda

Respostas:

228

Isso pode ser um bug no novo mecanismo de depuração (gerenciado) que acompanha o Visual Studio 2013. Tente ativar o Modo de compatibilidade gerenciado (que efetivamente o transforma em mecanismo de depuração pré-2013), localizado em Ferramentas - Opções - Depuração :

Se isso resolver o problema, sugiro tentar reproduzi-lo com um pequeno projeto e, em seguida, relatá-lo no Connect , para que pudesse ser corrigido.

@bjhuffine comenta abaixo que existem outras maneiras de ativar o modo de compatibilidade, sem desativá-lo globalmente (por exemplo, por projeto). Mais informações aqui: https://devblogs.microsoft.com/devops/switching-to-managed-compatibility-mode-in-visual-studio-2013/

Igal Tabachnik
fonte
7
Isso corrigiu meu mesmo problema com o Visual Studio 2015 CTP 6.
Chris Schiffhauer
1
Essas configurações resolveram o problema, mas as ferramentas de diagnóstico pararam de funcionar.
Xepe
6
Isso corrigiu meu mesmo problema no Visual Studio 2015 RTM (e desabilitou as novas ferramentas de diagnóstico), mas nunca tive esse problema no Visual Studio 2013. Terei que testar isso em meu computador doméstico e comparar.
ahwm
2
Você é um gênio meu amigo! Eu também descobri isso que não apenas adiciona mais explicações, mas mostra outras maneiras de fazer isso se você não quiser a grande mudança global. blogs.msdn.com/b/visualstudioalm/archive/2013/10/16/…
bjhuffine
11
Apenas para adicionar; se essas opções estiverem esmaecidas, você precisa interromper a depuração;)
Radderz
13

De acordo com a pergunta "Erro interno no avaliador de expressão", 'Usar modo de compatibilidade gerenciado' para "Editar e continuar". Tente marcar a opção "Usar os avaliadores de expressão C # e VB legados" em Ferramentas - Opções - Depuração .

Michael Freidgeim
fonte
2

Tentei a resposta de Igal e não funcionou para mim, mas encontrei uma solução que funcionou para mim. Limpei o relógio e comecei a adicionar itens novamente. Percebi que se tentasse adicionar um item que não estava dentro da sub-função ou função atual, ocorreu um erro interno.

Resolvi o problema adicionando outros itens de dentro de suas subs ou funções e não houve erros novamente.

KomArko
fonte
Na minha situação, o erro ocorre mesmo se eu adicionar itens de observação dentro do escopo do método, mas esta solução com "Usar modo de compatibilidade gerenciada" me ajuda.
Ceridan,
0

A resposta de Michael Freidgeim me ajudou a depurar meu problema. Mas quero acrescentar detalhes adicionais à causa do meu problema. Apenas ligeiramente relacionado à pergunta do autor da pergunta, mas seu erro é extremamente enganoso.

Estávamos usando um controle Telerik RadGrid com GridDateTimeColumn's. A propriedade MinDate nessas grades é padronizada para 01/01/1980, portanto, se você vincular uma data a esta coluna que seja menor do que essa, você verá este erro. O estranho é que a encadernação e exibição originais não causaram problema, foi apenas ao navegar para outra página que o erro foi gerado.

ascriven
fonte