“Mudanças a aplicativos de 64 bits não são permitidos” quando a depuração no Visual Studio 2008

StackOverflow https://stackoverflow.com/questions/1498464

Pergunta

Estou usando o Visual Studio 2008, C #. Eu tento usar edit-e-continuar (editar o código durante a depuração), e recebo esta exceção:

"Alterações 64-bit aplicativos não são permitidos"

Por que isso? Existe uma solução?

Foi útil?

Solução

Editar e continuar não é suportado em 64 bit aplicativos no nível CLR então não há nenhuma maneira para Visual Studio para implementá-lo também.

A maneira mais fácil de contornar este problema é alvejar seu aplicativo para x86 fichas. Isto fará com que a sua operação em modo Wow64 como um processo de 32 bits e, portanto, ser capaz de ENC. Você pode fazer isso fazendo o seguinte

  1. Botão direito do mouse sobre a aplicação .EXE e escolha Propriedades
  2. Vá para o Desenvolver Tab
  3. Alterar caixa de combinação de plataforma de destino para x86

enter descrição da imagem aqui

Outras dicas

Pessoalmente, o que eu realmente quero é stop-and-edit não edit-e-continuar.

Então, eu simplesmente desligar Ferramentas / Opções / depuração / Editar e continuar.

Se o fizer, inibe que a caixa de diálogo traquinas de me importunando sobre um recurso ausente Eu não queria, em primeiro lugar: -)

O "Editar e continuar" característica para 64-bit código será suportado no Visual Studio 2013.

Mais informações aqui .

Como jcopenha disse que não há edit-e-continuar em x64 ainda. A versão atual do CLR de 64 bits não apoiá-lo. No entanto, há um trabalho em torno.

Você pode encontrá-lo no Bug Babble pós .

Você precisa compilar seu gerenciado de montagem com uma CPU alvo de x86. Isto fará com que o CLR de 32 bits a ser usado ao invés do CLR 64 bits.

Para um projeto VB, clique direito sobre o projeto e vá para propriedades de compilação / Opções avançadas de compilação / / target CPU e configurá-lo para "x86". Para um # Projeto C, clique direito sobre o projeto e ir para Properites / Construir / plataforma de destino e defina como "x86".

Hope isso ajuda.

A edição-e-continuar recurso simplesmente não foi implementado em x64 ainda. Eu não ouvi nenhuma atualização sobre quando pretende fazê-lo ainda.

Veja também Por que não Editar e continuar trabalho sobre o CLR x64?

Eu tive a mesma mensagem de erro no MS Visual C # Express 2010. Foi engraçado, porém, porque o pedido foi definitivamente configurado como um projeto x86!

No final, foi a seguinte linha faltando no meu arquivo .csproj:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MY_CONFIG|x86'">
    ...
    <PlatformTarget>x86</PlatformTarget>
    ...
</PropertyGroup>

Eu não sei por que ele estava faltando ... Eu acho que MS Visual C # Express 2010 não é livre de erros;)

  1. quando Alvo CPU é definido como 'Qualquer CPU', ele será executado como um aplicativo de 32 bits no Windows de 32 bits, e aplicação de 64 bits no Windows de 64 bits. No entanto visual studio não permite recurso 'edit-e-continuar' para a aplicação de 64 bits.

  2. A fim de debug 'fluência' na máquina de 64 bits, que pode:

    a) conjunto 'alvo CPU' para 'Qualquer CPU', mas marque a caixa 'Prefere 32bit'.

    b) ou, set 'Alvo CPU' para 'x86'

Muito importante: tanto a opção requer o 'Ativar otimizações' caixa para ser desmarcada

.

Infelizmente, Editar e continuar não é suportado em 64-bit. Na verdade, se você tentar usar Editar e Continuar ao depurar um aplicativo de 64 bits, você recebe a seguinte mensagem de erro: "Alterações para 64-bit aplicativos não são permitidos" Muitos usuários podem não estar cientes de que, por padrão, quando você cria um C # ou VB projeto no Visual Studio 2008, a "Plataforma" para o projeto é definido como "Qualquer CPU". Isto significa que se você executar o aplicativo em um sistema operacional de 32 bits, o aplicativo será executado como um processo de 32 bits e da mesma forma, se você executar o aplicativo em um sistema operacional de 64 bits, a aplicação será de 64 bits. A conseqüência "Qualquer CPU" é que quando você tentar depurar seu aplicativo em um sistema operacional de 64 bits, você não será capaz de usar o editar e continuar recurso.

No entanto, há uma solução alternativa. Durante o desenvolvimento, você pode definir a plataforma para o seu projeto de 32 bits que significa que seu aplicativo será executado como um processo de 32 bits mesmo em um sistema operacional de 64 bits. Isto é conhecido como WOW64 ou "Windows on Windows" que basicamente significa que você pode executar um aplicativo de 32 bits em um sistema operacional de 64 bits.

Então, como você definir a plataforma para o seu projeto para 32 bits? Bem, você precisa criar uma plataforma de 32 bits usando o Visual Studio Configuration Manager. Aqui está uma pequena explicação passo a passo.

Primeiro, abra o diálogo "Configuration Manager" de construção -> Configuration Manager. A caixa de diálogo Configuration Manager é mostrado abaixo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top