Não é possível encontrar arquivos .cs para depurar código-fonte .NET

88

Tentei configurar a depuração do código-fonte .NET seguindo este passo a passo do MDSN . O cache de símbolos está configurado corretamente, assim como a verificação 'Habilitar revisão de origem do .NET Framework'.

Porém, posteriormente, sempre que desejo entrar no código .NET, sou solicitado a especificar a localização do arquivo cs relevante. A mensagem de erro é You need to find <filename>.cs to view the source for the current call stack framee The debugger could not locate the source file <filename>.cs.

Recebo a oferta de procurar o arquivo (mas não o tenho) ou visualizar uma desmontagem (mas não quero isso).

Como entrar no código-fonte .NET?

JBSnorro
fonte

Respostas:

140

Bem, no meu caso, eu não estava tentando depurar a estrutura .Net, mas estava recebendo o mesmo erro: Não é possível encontrar arquivos .cs para depurar o código-fonte .NET . Então eu tive que ativar a opção "Habilitar apenas meu código" em:
Ferramentas -> Opções -> Depuração -> Geral -> Habilitar apenas meu código

Por documentos do MS:

Você pode configurar o Visual Studio para passar automaticamente pelo sistema, estrutura e outras chamadas de não usuário e recolher essas chamadas na janela de pilha de chamadas.

https://docs.microsoft.com/en-us/visualstudio/debugger/just-my-code

dier
fonte
Eu tinha habilitado o ".NET Framework source stepping" que tinha desabilitado "Just my code" automaticamente e me deixou maluco por não ser capaz de entrar até encontrar isso. Portanto, fique atento ao marcar as opções para ver o que é desativado :)
Alan Warden
1
Eu pensei que já tinha habilitado isso. Eu fui e verifiquei, e com certeza, não foi verificado. Obrigado!
coinbird de
1
Ótima resposta e resolvido meu problema, mas isso irá ignorar o arquivo e não entrar nele. Pode ser necessária outra solução se o objetivo for entrar no arquivo.
Word Rearranger
51

Verificar Tools-> Options-> Debugging-> General-> Enable source server supportmisteriosamente fez tudo funcionar. Espero que o mesmo seja verdade para você

JBSnorro
fonte
19
Senhor, por que não funciona? Ainda estou sendo solicitado a navegar até o arquivo de código-fonte ao tentar entrar no código da estrutura.
gravidPensamentos de
28

Isso também me levou uma hora. Eu resolvi finalmente redefinindo as configurações -> Ferramentas -> Importar e exportar configurações -> Redefinir todas as configurações

Stefan
fonte
Funcionou! Após redefinir, eu simplesmente ignoro a configuração de 'opções-> Depuração' e importei o que exportei. Agradável!!
Mystic Lin
Trabalhei no VS 2015 Pro, é claro que não tenho nenhuma configuração personalizada, pois isso iria surpreendê-los.
RandomUs1r
Redefinir todas as minhas configurações também resolveu isso para mim ... que dor de cabeça. Tenho tantas configurações de cores personalizadas para depuração que tive que salvá-las em um arquivo separado - que não posso mais usar, grrr.
EspressoBeans
Eu redefina as configurações e reinicie o Visual Studio 2017. Reiniciar após a redefinição funcionou.
Siddharth
Fiz essa redefinição para Visual Basic .NET com VS Ultimate 2013 porque é com isso que estou codificando e essa redefinição interrompeu o estranho datetime.cs não consegue encontrar a mensagem de erro.
JohnH
7

Limpar \ limpo a solução antes que o build resolva o problema para mim.

Basta navegar e clicar em:

  1. Build -> Clean Solution.
  2. Build-> Build Solution (Ctrl + Shift + B).
Shahar Shokrani
fonte
7

Tentei todas as respostas de cima e nada funcionou.

Isso resolveu para mim:

Debug -> Delete all Breakpoints

e resolveu o problema! Tantas coisas diferentes causando esse problema.

Caseiro
fonte
Depois de tentar todas as combinações de configurações do depurador JIT, limpar minha solução, reiniciar o VS2019 centenas de vezes, repará-lo, redefinir todas as minhas configurações, etc, etc, etc, foi Excluir todos os pontos de interrupção que fez com que meu erro "Fonte não encontrada" desaparecesse , ao tentar depurar um teste XUnit. AAAAAAAAAAARGH. E obrigado @HomeMade
Ted
Não entendi, mas realmente resolveu o problema ...
Lukáš Kmoch
Como uma etapa adicional - tive que limpar e reconstruir minha solução - para fazê-la funcionar para mim.
Naren
5

Todas as respostas aqui falam sobre ignorar / evitar o código-fonte em vez de realmente entrar nele.

@JBSnorroestá no caminho certo, mas o problema é que a Microsoft não parece publicar todos os símbolos / fontes .NET que você pode encontrar. Não sei se é intencional da parte deles, mas para entrar nas fontes do MS, eles precisam publicar todas as versões de cada montagem, o que é uma grande tarefa logística.

Tools-> Options-> Debugging-> General-> Enable source server supportfuncionará em muitos casos, mas descobri, por exemplo, que mscorlib.dllpara 4.6.1 faltavam símbolos e / ou fonte descompilada. Então, eu não poderia entrar em código-fonte comum como Dictionary.csou Task.cscomo exemplos. Já que a fonte e os símbolos do servidor de símbolos MS provavelmente mudam o tempo todo. Meu problema pode estar resolvido no momento em que você ler isto?

Quando depuro a mesma solução no Jetbrain's Rider, posso ver e percorrer todas as classes em cada assembly .NET sem problemas. No entanto, no VS eu só posso entrar em algumas classes, mas não em outras?

Se você está realmente comprometido em entrar em todo o código-fonte .NET, pode usar o DotPeek do Jetbrain e descompilar os assemblies .NET em arquivos .cs reais em seu disco. Então, quando você vê isso,

Exemplo de código-fonte não encontrado

Agora você pode navegar em seu disco para o código-fonte que descompilou usando DotPeek. Apenas certifique-se de descompilar a mesma versão do assembly que você faz referência em seu projeto. Caso contrário, os símbolos podem não corresponder aos números de linha de origem corretos.

Em vez disso, se você apenas deseja ocultar esta "Fonte não encontrada" de aparecer constantemente e não se importa em entrar no código para o qual não há fontes, leia @Alex Shermana resposta. Você precisará descobrir em qual assembly o arquivo ofensivo está contido e, em seguida, adicionar esse nome de assembly à lista de exclusão.

Alimento para reflexão, não sou fã de Rider em vez de VS. O Rider ainda é um pouco cru e carece da quantidade absurda de ferramentas integradas que o VS tem. Contudo!! Gosto de tê-lo instalado lado a lado em casos como esse, onde sei que posso me aprofundar mais nas ervas daninhas.

Comer no Joes
fonte
1

Tive o mesmo problema, nenhuma das soluções propostas acima me ajudou a resolver o problema. Ocorreu no VS 2017. Quando executei o projeto no Visual Studio 2019, tudo funcionou. Portanto, tente executá-lo em outros ambientes. Espero que esta resposta ajude alguém

OlegI
fonte
Isso me ajudou. Instalei 2019 e tudo funciona novamente. Talvez eu tenha bagunçado minhas configurações.
Mo D Genesis
0

Se o erro for ao procurar "nullable.cs" ou algum outro arquivo de origem principal:

Você pode desativar os símbolos para módulos específicos usando Debug -> Options -> Debugging -> Symbolse, em seguida, na parte inferiorSpecify Excluded Modules .

Isso é útil para casos em que você fazer deseja desativar "Just My Code" para a etapa em outras montagens que você tem PDBs para. Acho que o Visual Studio vem com símbolos, mscorlib.dllmas não inclui a fonte, então, às vezes, ao entrar em algumas coisas, você encontrará um "nullable.cs" ou algum outro arquivo de origem principal.

Alex Sherman
fonte
0

Recebi este erro ao atualizar um pacote NuGet em um projeto, mas não atualizá-lo em outros projetos da solução.

Ir para o NuGet Manager da solução e usar a função consolidar, que garante que todos os projetos da solução usem a mesma versão, resolveu o problema para mim.

RonnyR
fonte
0

No meu caso, acabei renomeando a classe. Talvez estivesse se confundindo com algum outro módulo. Depois de renomeá-lo, eu poderia intervir.

Kirsten Greed
fonte