Partilhar via


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#)

Referência

Editar e continuar (Visual C#)