Ao depurar no Visual Studio, às vezes adiciono um ponto de interrupção, mas é oco e o VS diz "O ponto de interrupção não será atingido no momento. O código-fonte é diferente da versão original". Obviamente, isso me impede de poder depurar.
O que diabos a mensagem significa? Qual versão original? Se eu acabei de abrir a solução e não fiz nenhuma alteração no código, como pode haver uma 'versão original'?
.net
visual-studio
debugging
David
fonte
fonte
Respostas:
Como se diz, o "código fonte é diferente da versão original".
Clique com o botão direito do mouse na pasta do projeto dentro do Solution Explorer e escolha
Clean
. Crie uma nova versão do projeto e o ponto de interrupção funcionará novamente!fonte
Se você desmarcou o projeto DLL na configuração de compilação de depuração , seu novo código nunca será criado!
Vamos para
Build --> Configuration Manager ...
(no VS2010) e verifique se o projeto com o código que você está tentando depurar está verificado na configuração de compilação atual.fonte
Any CPU
opção e ela funciona novamente.Para mim, foi enquanto trabalhava em um projeto de site. Depois de limpar essas pastas temporárias, recebi os erros apropriados do compilador de volta:
C:\Documents and Settings\%username%\AppData\Local\Temp\Temporary ASP.NET Files
C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
Finalmente resolvi o problema quando descobri que um arquivo de classe que eu havia intencionalmente movido para uma subpasta, de alguma forma reapareceu na pasta raiz. O VS estava usando esse enquanto eu estava editando o outro.
fonte
%localappdata%
na caixa de pesquisa leva você diretamente paraC:\Documents and Settings\%username%\AppData\Local
Você já fez isso?
Deseja continuar e executar a última compilação bem-sucedida?
Se você marcou a caixa e pressionou "Sim", a última versão bem-sucedida será executada, mesmo que seu projeto não seja compilado. Isso significa que sempre que você definir um ponto de interrupção, receberá esse erro.
Tente alterar este valor:
fonte
Vamos para
Desmarque a opção Exigir que os arquivos de origem correspondam exatamente à versão original
fonte
Selecione Depurar nas configurações da solução , em vez da versão
fonte
Preste atenção na janela "Saída" no VS. Ele informará quais montagens são carregadas e quando. Você pode ver que uma versão mais antiga do seu assembly em algum lugar da pasta está sendo carregada.
Por exemplo, se você tiver várias montagens e estiver tentando interromper uma das montagens de suporte, o CLR cuidará da resolução da montagem, o que pode carregar outro arquivo de montagem além daquele que você referenciou no projeto.
fonte
Fechar o Visual Studio e reabrir a solução pode corrigir o problema, ou seja, é um bug no próprio IDE (estou executando o VS2010).
Se você tiver mais de uma instância do Visual Studio em execução, precisará fechar a instância que está executando a solução com o problema.
fonte
Uma nova maneira de obter esse problema apareceu no Visual Studio 2017 15.3.1 a 15.3.5. Se você estiver usando o EditorConfig , a
charset=utf8
opção causa esses sintomas. A equipe do VS reproduziu isso e diz que está trabalhando nisso .Portanto, uma correção é comentar sua
charset=utf8
linha no arquivo .editorconfig.Editar: Isso deve ser corrigido a partir do VS 15.5.
fonte
charset=utf8
estava sendo interpretado como "UTF-8 com BOM". Alterar essa interpretação para "sem BOM" quebrou alguns arquivos UTF-8 que continham a BOM. Portanto, se você se deparar com esse problema e a correção do Visual Studio ainda não foi lançada, tente remover a BOM desde o início dos arquivos de texto e isso pode resolver o problema. (Este comentário é implorando para uma referência Zero Wing ... :-))Isso também acontece frequentemente se você estiver usando um arquivo de referências a binários (em vez de referências de projetos a códigos em seu projeto), e o binário compilado que você está referenciando fica fora de sincronia com o código-fonte correspondente em sua máquina. Isso pode acontecer porque você baixou uma nova versão do binário do controle de origem sem o novo código-fonte que o acompanha, ou você tem algumas versões do binário em sua máquina e está fazendo referência a uma cópia antiga etc. Se isso é realmente o problema, é um bom motivo para usar as referências do projeto, tanto quanto possível.
fonte
Para mim, nenhum dos itens resolveu o problema. Acabei de adicionar uma nova linha de código dentro dessa função, algo como:
adicionando isso, acho que acionei o visual studio para adicionar essa função à versão original
fonte
Isso pode acontecer quando a hora do sistema é alterada durante a depuração ou entre sessões de depuração, seja programaticamente, manualmente ou por um programa externo.
fonte
Há uma configuração quase imperceptível que corrigiu esse problema para mim. Se houver um arquivo de origem específico no qual o ponto de interrupção não esteja atingindo, ele poderá ser listado em
Por alguma razão desconhecida para mim, o VS 2013 decidiu colocar um arquivo de origem lá e, posteriormente, não consegui mais atingir o ponto de interrupção nesse arquivo. Esse pode ser o culpado pelo "código-fonte ser diferente da versão original".
fonte
O problema é que suas informações de depuração não estão sincronizadas com seu assembly. A solução é simples:
Deve fazer o truque!
(o estranho é que uma reconstrução sem jogar fora os arquivos .pdb nem sempre funciona. Posso ver a data da modificação sendo atualizada, mas ainda em algum lugar da cadeia (depurador VS2013, IIS, cache de montagem) essa alteração não é detectada )
fonte
Você pode receber essa mensagem quando estiver usando um ativador e a montagem na qual você definiu o ponto de interrupção ainda não foi carregada.
O ponto de interrupção será resolvido assim que o ativador carregar a montagem (assumindo que os símbolos de montagem e depuração estejam atualizados). Um bom lugar para se olhar é a janela de módulos no menu de depuração. Lá, você deve procurar também a montagem à qual seu arquivo pertence. Primeiro verifique se a montagem está carregada. Então, de onde é carregado? Então, o arquivo de símbolos está carregado. Novamente, de onde o arquivo de símbolos é carregado? Por fim, verifique as versões de ambos.
fonte
Eu encontrei isso também. As condições que causaram meu problema:
Eu havia causado isso abrindo uma versão anterior (o VS solicitou que perguntasse se eu queria apontar para esta instância na depuração do IIS, respondi 'Sim') e depois abri a versão atual (respondendo novamente ao prompt do IIS com um 'Sim' ), tentando depurar na versão anterior.
Para resolver, apenas fechei e reabri a versão anterior e a pretendida, mais uma vez afirmando-a como a fonte de depuração.
fonte
Tente desativar e redefinir o ponto de interrupção durante a execução no modo de depuração, em vez de fazê-lo antes de iniciar o modo de depuração.
fonte
Isso acontece também ao depurar um projeto C ++ que carrega um módulo que foi implementado com alguma linguagem CRL (C ++ gerenciado, C # etc). Nessa situação, a mensagem de erro é realmente enganosa.
A solução é colocar a propriedade de configuração de suporte do Common language runtime (CLR) no projeto de inicialização e recompilar isso.
fonte
Se você tiver mais de um projeto em sua solução , verifique se o projeto correto está definido como
StartUp Project
. Para definir um projeto específico como o Projeto de inicialização da sua solução, clique com o botão direito do mouse no projeto, escolhaSet As StartUp Project
.Depois de definir meu projeto de inicialização corretamente, o ponto de interrupção desejado foi alcançado pelo encadeamento.
fonte
Eu experimentei isso em uma versão de 32 bits no vs2017.
Exatamente nenhuma das soluções funcionou para mim. Reiniciei, limpei os arquivos IDE, limpei a solução criada, extraí do git repo e reconstruí a solução sem sucesso.
Eu estava obtendo uma dependência de 64 bits do nuget e, assim que usei o assembly, as fontes não estavam mais sendo construídas no executável final e, em vez disso, as fontes em cache do IDE estavam sendo construídas.
Removai a configuração de nuget, removi o assembly referenciado, baixei a fonte, criei o log4net manualmente, assinei, adicionei-o a uma pasta no meu projeto, adicionei referência a ele e pude depurar novamente.
Isso foi uma dor, espero que consiga aparecer na lista de respostas para todos verem.
Editar: não houve erro durante a compilação, apesar de a opção "erro na solicitação de compilação" estar ativada nas configurações do IDE.
fonte
Para mim, a solução estava oculta nas
Advanced Build Settings
propriedades do projeto:Por um motivo desconhecido, foi definido como
none
: configurá-lo parafull
causar os pontos de interrupção a serem atingidos.Para chegar a esse diálogo, abra as propriedades do projeto, vá para
Build
e selecione oAdvanced...
botão na parte inferior da página.fonte
Eu tive o mesmo problema em vários projetos em um projeto de arquitetura em camadas e o problema estava nas configurações: a caixa de seleção de compilação do projeto selecionado não foi marcada. então o problema foi corrigido para um projeto.
Para uma outra camada, estava dando o mesmo problema, mesmo a compilação é ativada nas configurações. Eu fiz todas as outras opções, como reiniciar a limpeza do projeto, mas nenhuma delas ajudou. Finalmente, desmarquei a caixa de seleção de compilação para esse projeto em particular e limpei e recompilei. o novo marcou a caixa de seleção e fez o mesmo. então o problema foi corrigido.
Espero que isto ajude..
fonte
No meu caso, eu estava anexando a um processo em execução no VS 2012. Ao anexar, você tem a opção de depurar em vários modos (nativo, script, silverlight, gerenciado 2.0, gerenciado 4.0, etc.). Por padrão, o depurador seleciona o modo automaticamente. No entanto, o Automático nem sempre faz a escolha correta. Se o seu processo contiver vários tipos de código, verifique se o depurador está usando o correto.
fonte
No meu caso, eu estava desenvolvendo um aplicativo Windows CE, testado em um emulador. O problema era que o executável não foi implantado no emulador; portanto, o .pdb (no ambiente de desenvolvimento) não estava sincronizado com o .exe (no emulador), porque o novo .exe nunca foi copiado para o emulador. Eu tive que excluir o .exe no emulador para forçar uma nova implantação. Então funcionou.
fonte
O que funcionou para mim foi mudar a plataforma da solução de x86 para Qualquer CPU. Depois de mudar para Qualquer, defini um endereço de parada, gerenciei o site, abri a página, cliquei no botão e ele parou. Fechei o site, mudei de volta para x86 e executei a mesma sequência com sucesso.
fonte
No Windows 7, Visual Studio Express 2010, se você tiver ativado a opção Usar o modo de compatibilidade para o Windows XP SP3 , esse erro poderá ocorrer.
Desmarquei a opção e ela funcionou perfeita novamente. Clique com o botão direito do mouse no atalho para o VS ou o executável, selecione propriedades e compatibilidade .
fonte
Primeiro eu tentei na linha de comando;
excluindo arquivos temporários da linha de comando funcionou.
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Arquivos temporários do ASP.NET> raiz de rd / s
Quando desativo "Ativar apenas meu código" em Ferramentas -> Opções -> Depuração -> Geral
O problema foi resolvido para mim. É um aplicativo WCF, estava tentando depurar uma página ashx. http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx
fonte
Aconteceu comigo porque eu tinha outros projetos na solução que não estavam sendo construídos. Depois de descarregar esses projetos problemáticos (clique com o botão direito do mouse no projeto no Solution Explorer -> Unload Project), reconstruí a solução e executei novamente - o ponto de interrupção foi atingido!
fonte
Por acaso, estava no Visual Studio 2017 depois de adicionar arquivos existentes ao projeto. Isso funcionou para mim:
SolutionFolder\.vs\SolutionName\v15\sqlite3
e removastorage.ide
fonte
Verifique se você não está no modo de liberação ao tentar depurar.
fonte