Editar e continuar: “Alterações não são permitidas quando ...”

108

Mesmo se eu criar um projeto WinForms limpo, Editar e Continuar não funciona e me dá o erro:

As alterações não são permitidas quando o depurador foi anexado a um processo já em execução ou o código que está sendo depurado foi otimizado no tempo de construção ou execução.

  1. A opção Editar e continuar está marcada em Ferramentas → Opções → Depuração.
  2. A otimização não está habilitada.
  3. Parece que não há nenhum gerenciador de perfis configurado.
  4. Estou executando em modo de depuração
  5. Estou executando uma CPU x64 e Windows XP de 32 bits, mas definir o destino da plataforma como x86 em vez de AnyCpu não ajuda.
  6. Reparar a instalação do Visual Studio não ajuda.

Também encontrei este artigo no site do MSDN:

Cenários não suportados

Editar e continuar não está disponível nos seguintes cenários de depuração:

  • Depurando no Windows 98.

  • Depuração de modo misto (nativo / gerenciado).

  • Depuração de SQL.

  • Depurando um despejo do Dr. Watson.

  • Editando o código após uma exceção não tratada, quando a opção "Desenrolar a pilha de chamadas em exceções não tratadas" não está selecionada.

  • Depuração de um aplicativo de tempo de execução integrado.

  • Depurar um aplicativo com Anexar a em vez de executar o aplicativo com Iniciar no menu Depurar.

  • Depuração de código otimizado.

  • Depuração de código gerenciado quando o destino é um aplicativo de 64 bits. Se quiser usar Edit and Continue, você deve definir o destino como x86. (Propriedades do projeto, guia Compilar, configuração do Compilador avançado.).

  • Depurar uma versão antiga do seu código depois que uma nova versão falhou ao criar devido a erros de compilação.

Mas posso responder "Não" a todos os itens desta lista.

Funcionou antes, mas há vários dias parou de funcionar e não sei qual poderia ser o motivo.

nightcoder
fonte
2
Você está executando no modo Release? Você está rodando em X64?
Sam Saffron
O método que você está tentando usar no E&C é realmente curto? talvez tenha sido inline (embora eu ache que inlining não aconteça na depuração)
Sam Saffron
Não funciona em nenhum método, seja muito curto ou muito longo.
nightcoder
Você já tentou uma instalação de reparo?
Richard Anthony Hein
3
Acho que devo acrescentar que E&C é um recurso bastante complexo. A matriz de teste do depurador é enorme, e fazer com que o E&C funcione em todas as combinações seria extremamente difícil. Mas é um recurso muito importante também, então assumimos várias limitações para garantir que ele fosse lançado. Dentro das restrições deliberadas que colocamos nele, é um dos recursos de mais alta qualidade que enviamos.
Jay Bazuzi

Respostas:

21

Finalmente consegui resolver o problema: DESINSTALAR Gálio

Gallio parece ter muitas arestas e é melhor não usar MbUnit 3.0, mas usar o framework MbUnit 2.0, mas usar o runner gallio, que você está executando sem instalar a partir do instalador (que também instalou um plugin do Visual Studio).

Aliás, tive o problema mesmo depois de "desabilitar" o plugin Gallio. Apenas a desinstalação resolveu o problema.

PS. Editado por nightcoder:
No meu caso, desabilitar o TypeMock Isolator (framework de mocking) finalmente ajudou ! Editar e continuar agora funciona !!!

Aqui está a resposta do suporte TypeMock:

Depois de examinar mais a fundo o problema de editar e continuar, e conversar sobre isso com a Microsoft, chegamos à conclusão de que ele não pode ser resolvido para o Isolator. Isolator implementa um perfilador CLR e, de acordo com nossa pesquisa, uma vez que um perfilador CLR é ativado e anexado, editar e continuar é automaticamente desativado. Lamento dizer que isso não é mais considerado um bug, mas sim uma limitação do Isolator.

nightcoder
fonte
69

Outras soluções aplicáveis

Abaixo está uma lista incompleta e não ordenada de possíveis soluções para tentar se você * estiver tentando corrigir Editar e Continuar rapidamente.

  • Certifique-se de estar no modo de depuração
  • Certifique-se de não iniciar um processo de modo misto
  • Tente definir o destino da CPU para x86 em vez de AnyCPU (em máquinas x64)
  • Desmarque a caixa de seleção Optimize Code para Debug Mode em Project Properties-> Debug
  • Desmarque Habilitar Otimizações nas Configurações Avançadas do Compilador
  • (ASP.NET) Verifique a resposta do nightcoder se for o caso
  • (ASP.NET) Verifique esta resposta (por matriz) se for o caso
  • (ASP.NET) Certifique-se de ter Edit and Continue habilitado na guia Web (vs2010)
  • (ASP.NET) Vá para Propriedades> Web> Servidores e certifique-se de que Ativar e continuar está marcado em Usar servidor de desenvolvimento do Visual Studio .
  • (ASP.NET WebAPI) Certifique-se de ter parado no método do controlador usando um ponto de interrupção, antes de tentar editá-lo.
  • (vs2017) Vá para Ferramentas> Opções> Depuração e desmarque (desmarque) 'Editar e continuar'. Na verdade, isso é o oposto do conselho 'convencional' (veja alguns outros pontos neste post). Não permite que você realmente faça alterações em sua corrida programa (ou seja, não faz hot-swap das alterações de código que você faz) - ele simplesmente permite que você edite seu código (ou seja, evita aquela mensagem irritante e "travando" seu editor )
  • Vá para Ferramentas> Opções> Depuração> Geral e certifique-se de exigir que os arquivos de origem correspondam exatamente à versão original está desmarcada.
  • Marque Habilitar alocador de heap de depuração do Windows (apenas nativo) [VS Community 2017]
  • Você está usando o Microsoft Fakes? Ele inibe Editar e Continuar.
  • Elimine todas as instâncias * .vshost.exe selecionando Finalizar árvore de processos no Gerenciador de tarefas . O VS irá regenerar uma instância correta.
  • Remova todos os pontos de interrupção com Depurar-> Excluir todos os pontos de interrupção
  • Habilitar e continuar existe no menu Ferramentas> Opções> Depuração e também nas Configurações do projeto . Certifique-se de verificar os dois locais. editar e continuar não é compatível com a configuração do Intellitrace estendido.
  • Certifique-se de que as informações de depuração em Propriedades do projeto> Compilar> Avançado> Saída> Informações de depuração estejam definidas como Completas
  • Algum plugin pode estar interferindo. Verifique desativando / desinstalando e, em seguida, tentando novamente as outras soluções.
  • Se você não estiver prestando atenção suficiente, o erro que você obtém ao tentar consertar isso pode mudar para outro que seja mais fácil de diagnosticar. Por exemplo, um método contendo uma expressão lambda não pode oferecer suporte para editar e continuar.
  • Certifique-se de que a variável do sistema COR_ENABLE_PROFILINGnão esteja definida como 1. Alguns criadores de perfil definem isso ao instalar e deixam assim após a desinstalação. Abra um prompt de comando e digite setpara verificar rapidamente se seu sistema foi afetado; em caso afirmativo, remova a variável ou defina-a como 0:

    • No Windows 8 e superior, pesquise por Sistema (Painel de Controle).
    • Clique em Configurações avançadas do sistema link .
    • Clique em Variáveis ​​de Ambiente .
    • Remover COR_ENABLE_PROFILING
  • Esteja ciente dos cenários não suportados (conforme relatado na pergunta) e das edições não suportadas .


* por 'você', quero dizer o visitante da página que está martelando a cabeça em um teclado para encontrar a solução.


Sinta-se à vontade para editar esta resposta para adicionar sua solução alternativa se não estiver listada aqui!

beppe9000
fonte
5
Foi o COR_ENABLE_PROFILING ... não tenho ideia de por que foi definido. Obrigado. Parando de martelar minha cabeça no teclado agora.
Florian Lagg
2
Eu tentei de tudo, mas funcionou. Então percebi que tenho que estar no modo de interrupção (depurar-> interromper tudo) ou em um ponto de interrupção. Por favor, adicione isso à sua lista. msdn.microsoft.com/en-us/library/7932e88z.aspx
Niloofar
1
Funciona para mim, obrigado, a quarta linha "Desmarque a caixa de seleção Otimizar código para o modo de depuração em Propriedades do projeto-> Depurar"
Aljohn Yamaro
2
A única coisa que resolveu para mim não é mencionado aqui: eu tinha que dis capaz (desmarque) a opção “Ativar Editar e continuar” opção em Ferramentas> Opções> depuração. Isso é completamente o oposto do que você pensaria intuitivamente, mas foi isso que consertou para mim (ou seja, evitou aquela mensagem irritante e apenas me deixou editar meu código).
leo
1
@leo É wiki da comunidade para que você possa editar livremente. O botão 'editar' não funciona para você? Vejo que você tem reputação suficiente para fazer isso. Ps. Acrescentei uma referência à sua resposta para que haja menos dispersão.
beppe9000
23

Se você estiver depurando um aplicativo ASP.NET, vá para propriedades> web> Servidores e certifique-se de que "habilitar e continuar" esteja marcado em Usar servidor de desenvolvimento do Visual Studio.

viggidade
fonte
3
também precisa pressionar Pausar durante a depuração e, em seguida, poder editar o código
Alexey Obukhov
Se eu usar iis local, "ativar e continuar" está desabilitado
Khoshtarkib
11

Eu tive o mesmo problema. Até reinstalei o VS 2008, mas o problema não foi embora. No entanto, quando apaguei todos os pontos de interrupção, tudo começou a funcionar.

Debug->Delete All Breakpoints

Acho que estava acontecendo porque eu havia excluído uma página aspx que tinha pontos de interrupção em seu código e, em seguida, criei outra página com o mesmo nome. Isso provavelmente confundiu o VS 2008.

Amer
fonte
5

Algumas coisas para verificar

  • Certifique-se de que sua compilação esteja definida como Depurar vs. Liberar
  • Certifique-se de não iniciar um processo de modo misto
  • Se estiver em uma máquina de 64 bits, certifique-se de definir o destino da CPU para x86 em vez de AnyCPU

EDITAR

Não acredito que isso deva importar, mas certifique-se de que o processo de hospedagem esteja habilitado para a plataforma de destino. Provavelmente não vai ajudar.

Se for reprojetado para novos projetos, pode ser algo ainda mais sutil. Eu tentaria o seguinte.

  • Faça backup de HKCU: \ Software \ Wow6432Node \ VisualStudio \ 9.0 (talvez apenas renomeie)
  • Exclua a mesma chave
  • Tente a reprodução novamente
JaredPar
fonte
2
O que é um processo de modo misto? Eu até tentei um novo projeto de winforms.
nightcoder
Não tenho o HKCU: \ Software \ Wow6432Node \ node
nightcoder de
@nightcoder, em seguida, tente HKCU: \ Software \ Microsoft \ VisualStudio \ 9.0
JaredPar
5

Nenhuma das soluções acima funcionou para mim (rodando em uma máquina 64x).

Por fim, cliquei em 'advanced compiler settings'e DESCARTEI 'enable optimizations 'e agora posso percorrer o código e editar durante a depuração.

Nifle
fonte
2
Isso parece ser apenas Visual Basic: msdn.microsoft.com/en-us/library/07bysfz2%28v=vs.100%29.aspx
Marcel
Funciona para mim! VS2013, VB.Net, Frame 3.5
MiBol
1
E onde estão essas configurações?
vapcguy de
5

"Editar e continuar", quando habilitado, só permitirá que você edite o código quando estiver em modo de interrupção: por exemplo, tendo a execução pausada por uma exceção ou atingindo um ponto de interrupção.

Isso significa que você não pode editar o código quando a execução não está pausada! Quando se trata de depuração de projetos da Web (ASP.NET), isso é muito pouco intuitivo, já que você frequentemente desejaria fazer alterações entre as solicitações. Neste momento, o código que sua (provavelmente) depuração não está executando, mas também não está pausado!
Para resolver isso, você pode clicar em "Break all" (ou pressionar Ctrl+ Alt+ Break). Como alternativa, defina um ponto de interrupção em algum lugar (por exemplo, em seu Page_Loadevento), recarregue a página para que a execução seja pausada quando atingir o ponto de interrupção e agora você pode editar o código. Até mesmo código em .csarquivos.

protetor um
fonte
4

Para mim, por um motivo que não entendo, a configuração "Gerar informações de depuração" nas "Configurações avançadas do compilador" foi definida como "somente pdb" em vez de "Completo".

Por padrão, este parâmetro é sempre definido como "Full", mas um poltergeist misterioso alterou este parâmetro na noite passada. :)

PS Estou em Visual Basic .Net com Visual Studio 2010

Samuel
fonte
4

Se sua preocupação for com um aplicativo ASP.NET, certifique-se de ter habilitado editar e continuar na guia da web (vs2010). Também havia uma configuração separada para depuração do ASP.NET nas versões anteriores.

Saudações,

Adão.

Adão
fonte
4

Descobri que, embora nas propriedades do projeto, a guia build & debug esteja definida como Debug e todas as outras configurações estejam corretas, ainda recebo a mensagem, no entanto, após cavar mais um pouco no menu Build, selecione Configurations Manager ... e certifique-se de que Debug esteja selecionado em dois lugares lá também. vai descobrir ... quantos lugares diferentes eles precisam para definir a depuração ?????? mesmo que você defina Projeto - Configuração para Depurar e, em seguida, em Compilar - Gerenciador, ele não é alterado, então você alterou a mesma configuração lá também Configuração do Projeto - parece um problema da Microsoft novamente ...

RAL
fonte
4

Este problema é devido à configuração do Intellitrace

Se o Intellitrace estiver ativado, certifique-se de que apenas o evento do Intellitrace esteja marcado

Caso contrário, isso não permitirá editar e continuar.

Se você clicar nas opções do Intellitrace, verá os avisos.

KuldeepVerma
fonte
Esse é o problema, para mim!
beppe9000
Pesquisei todas as opções nas Ferramentas do Visual Studio para "Intellitrace" e não existe essa opção no VS Community 2017. Um pouco mais de detalhes aqui ajuda.
vapcguy
4

As fotos a seguir me ajudaram a usar o VS2010:

vá para Ferramentas, Opções, Depuração, Geral e certifique-se de que a opção "Exigir que os arquivos de origem correspondam exatamente à versão original" esteja desmarcada.

Vinay
fonte
3

Isso acontece quando o depurador não atingiu um ponto de interrupção ou você não pressionou Break All (pausa). Não pode ser tão simples, pode?

Richard Anthony Hein
fonte
Acontece quando o depurador atinge um ponto de interrupção e estou tentando alterar algo no código.
nightcoder
3

O erro diz que uma possível causa é: "o código que está sendo depurado foi otimizado em tempo de construção ou execução". Vá para Project Properties-> Debug e desmarque a caixa Optimize Code para o modo Debug.

pbalaga
fonte
3

Tive esse problema no Microsoft Visual Studio 2008 e a solução é fácil. ao executar seu projeto, defina o modo "Debug" e não "Release". A solução de outra pessoa pode ser útil.

user2412450
fonte
2

Se eu criar um novo projeto, as edições durante a depuração não funcionarão. Se eu criar um novo site, as edições durante a depuração funcionarão conforme o esperado.

Greg
fonte
1

No meu caso, apenas redefinir as configurações do depurador padrão e definir IntelliTrace-> apenas eventos intellytrace ajuda

Yuriy Vikulov
fonte
1

Algumas coisas que pareceram ajudar no uso do VS2010:

  • vá para Ferramentas, Opções, Depuração, Geral e certifique-se de que a opção "Exigir que os arquivos de origem correspondam exatamente à versão original" esteja desmarcada.
  • várias instâncias .vshost.exe podem sobrar, por exemplo, da desanexação do depurador VS de um processo interrompido. Isso irá interferir nos pontos de interrupção e nas compilações também. Use o Gerenciador de tarefas, guia Processos para eliminar todas as instâncias de .vshost.exe clicando com o botão direito em cada instância e selecionando Finalizar árvore de processos. O VS criará uma nova instância.
Scott
fonte
1

Removi um conjunto de dados do meu projeto porque não o usei. Depois disso, eu poderia modificar o programa durante a depuração.

ashkan_jami
fonte
1

Fiz todas as alterações mencionadas em todas as outras respostas e nenhuma funcionou. O que eu aprendi? Habilitar e continuar existe no menu Ferramentas> Opções> Depuração e também nas configurações do Projeto. Depois de verificar ambos, Ativar e Continuar funcionou para mim.

Stevebot
fonte
3
Quais configurações de projeto? Você é muito vago
Adaptabi
@Adaptabi Eles significam que se você clicar com o botão direito do mouse no Nome do projeto, clicar em Propriedades e (se for um projeto da web) clicar em Web, há uma caixa de seleção para certificar-se de que "Ativar Editar e Continuar" está marcada.
vapcguy
1

Eu encontrei isso hoje - descobri que ter as informações de depuração definidas como somente pdb (ou nenhuma, eu imagino) impedirá que Editar e Continuar funcionem.

Certifique-se de que suas informações de depuração estejam definidas como "completas" primeiro!

Propriedades do projeto> Compilar> Avançado> Saída> Informações de depuração

Guy Danus
fonte
1

Parece ilógico, mas a única maneira era desabilitar as opções de edição e continuação do VS 2017 ... Então, editar e continuar AspNet começou a funcionar ...

FRK
fonte
Exatamente! É contra-intuitivo, mas o que funcionou para mim também foi desativar "editar e continuar". Ele não fará "hot swap" das alterações feitas, mas pelo menos você pode simplesmente editar seu código e, em seguida, ele terá efeito ao reiniciar seu aplicativo.
leo
1

o que funcionou para mim foi desmarcar "Usar modo de compatibilidade gerenciada" em

Ferramentas -> Opções -> Depuração

TBN: marcar ou desmarcar "Exigir que o arquivo de origem corresponda exatamente à versão original" parece não influenciar o E&C

Espero que isso possa ajudar.

B. Cafaro
fonte
1

Habilite a edição e continue apenas o trabalho execute o IIS Express. Não trabalhe em ISS local ou host externo.

Ahmad Aghazadeh
fonte
1

Eu tive esse problema irritante desde que atualizei meu VS 2019 para 16.4.3 e me causou muita dor de cabeça.
Finalmente resolvi o problema desta forma:

1. Pare a depuração
2. Selecione a solução em "Solution Explorer"
3. Na janela Propriedades , altere a propriedade "Configuração ativa" de "Release | Any CPU" para "Debug | Any CPU"
4 Em Depurar> Opções> Geral, marque a caixa de seleção Editar e continuar

que funcionou para mim e espero que funcione para você também.

Masarwa
fonte
0

tipos de interoperabilidade incorporados, o visual studio deve ser definido como falso

Wilma Fingerdoo
fonte
0

Fiz isso acontecer em um arquivo de classe vinculado. O resto do projeto permitiu E&C, mas obtive o mesmo erro ao editar o arquivo vinculado. A solução foi quebrar o arquivo vinculado em seu próprio projeto e referenciar o projeto.

jlo-gmail
fonte
0

Eu enfrentei o mesmo problema. Meu problema era que eu conseguia modificar um arquivo, mas não outro (ambos estão no mesmo projeto). Mais tarde, descobri que o arquivo que não consegui modificar também fazia parte de outro projeto. Que outro projeto (Teste de Unidade) não foi carregado e inteligente depurador VS mostra o erro de que o assembly para este arquivo não foi carregado e as alterações não são permitidas. Que estranho!

Portanto, tive que descarregar o projeto de teste de unidade e continuar a depuração EnC.

Ajay
fonte
0

Eu tinha um projeto de banco de dados na solução que impedia a edição do projeto de webforms.

Cliquei em "Descarregar" no projeto de banco de dados e agora tudo funciona perfeitamente.

Adão
fonte
0

Para o VS2017 pode ajudar a remover o arquivo .suo em sua solução, funcionou para mim. :)

Nieksa
fonte