Alterações de código suportadas (C#)
Editar e Continuar trata a maioria dos tipos de alterações de código dentro dos corpos do método. A maioria das alterações fora dos corpos do método e algumas alterações dentro dos corpos do método, no entanto, não podem ser aplicadas durante a depuração. Para aplicar essas alterações sem suporte, você deverá parar a depuração e reinicializar com uma versão atualizada do código.
As seguintes alterações não podem ser aplicadas ao código C# durante uma sessão de depuração:
As alterações na instrução atual ou qualquer outra instrução ativa.
As instruções ativas incluem todas as instruções, em funções na pilha de chamadas, que foram chamadas para acessar a instrução atual.
A instrução atual é marcada por um plano de fundo amarelo na janela de origem. Outras instruções ativas são marcadas por um plano de fundo sombreado e são somente leitura. Essas cores padrão podem ser alteradas na caixa de diálogo Opções.
Alterações nos símbolos globais, incluindo as seguintes:
Adicionando novos tipos.
Adicionando métodos a um tipo.
Alterando a assinatura de um tipo.
Adicionando campos, eventos ou propriedades a um tipo.
Editando um método anônimo ou qualquer método que contenha um método anônimo. Esses métodos são marcados por um plano de fundo sombreado.
Adicionando um novo método anônimo.
Alterando, removendo ou alterando atributos.
Adicionando, removendo ou alterando políticas using.
Removendo ou modificando variáveis locais. Adicionar variáveis locais é permitido.
Adicionando foreach, using, ou lock em torno da instrução ativa.
Modificando um método que contém uma instrução yield return ou yield break.
Alterando um construtor com um campo que é inicializado por um método anônimo.
Código não seguro
As alterações no código não seguro têm as mesmas restrições que as alterações no código seguro, com uma restrição adicional:
- Editar e Continuar não dão suporte a alterações no código não seguro que saem de um método que contém o operador stackalloc. Isso se aplica somente a métodos ativos. Quando você estiver depurando, qualquer função que atualmente esteja na pilha de chamadas é uma função ativa.
Exceções
Editar e Continuar dá suporte a alterações a blocos catch, finally,e try, com algumas exceções para blocos em métodos ativos, como os métodos que estão atualmente na pilha de chamadas.
Em uma função ativa que é a função mais recente na pilha de chamadas, Editar e Continuar não dá suporte a:
Adicionando um bloco catch ou finallyem torno da instrução ativa.
Adicionar manipuladores de exceção aninhados com os níveis de aninhamento maiores que seis.
Em uma função ativa que não é a função mais recente na pilha de chamadas, Editar e Continuar não dá suporte a:
Adicionando um bloco catch, finally ou tryem torno da instrução ativa.
Adicionar manipuladores de exceção aninhados com os níveis de aninhamento maiores que seis.
Alterando o código dentro de um bloco tryque contém a instrução ativa.
Cenários sem suporte
Editar e Continuar não está disponível nos seguintes cenários de depuração:
Depurando código LINQ. Para obter mais informações, consulte Depurando LINQ.
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 sem tratamento, quando a opção "Voltar para a pilha de chamadas em exceções não tratadas" não está selecionada.
Depurando um aplicativo inserido de tempo de execução.
Depurando um aplicativo que tem Anexar a em vez de executando o aplicativo escolhendo Iniciar no menu Depurar.
Depurando código otimizado.
Depurando uma versão antiga do código depois que uma nova versão não é compilada devido a erros de compilação.
Consulte também
Tarefas
Como usar Editar e Continuar (C#)