Pergunta

Eu queria saber se havia uma maneira de bloquear completamente meu código enquanto o depurava no Visual Studio 2008. O código documenta o bloqueio automaticamente ao executar como aplicativos de 64 bits, o que eu prefiro muito; No entanto, faço a maior parte da minha codificação fazendo complementos para o Excel, que é de 32 bits. O resultado é que, embora eu tenha como alvo 'Anycpu', o host VS sabe que está em execução dentro de um processo de 32 bits e, portanto, o código -fonte é não Bloqueado enquanto o código está em execução hospedada no Visual Studio.

Posso desativar a edição e continuar indo para ferramentas> Opções> Debugging> Editar e continuar e desmarcando a caixa de seleção 'Editar e continuar' ativada. Isso não bloqueia completamente o código, no entanto. Isso impede que qualquer edição no código seja executado no atual Execute, mas não impede que os cliques ou pressões de tecla do mouse alterem o código.

Novamente, ao trabalhar com aplicativos de 64 bits, isso não ocorre - o código está completamente bloqueado. Eu prefiro muito o código a ser completamente bloqueado por pelo menos alguns motivos:

  1. Eu posso acidentalmente acertar uma chave ou similares durante a depuração, o que eu definitivamente não quero fazer. É raro, mas é um problema.

  2. Muitos dos meus testes automatizados conduzem a interface do usuário via SendKeys. Ao passar por um teste desse tipo usando o depurador, no entanto, às vezes posso esquecer que alguns dos aspectos envolvem o SendKeys, o que significa que as teclas acabam sendo enviadas para o Visual Studio IDE em vez do Excel.

Na edição nº 2, acima, o teste de unidade falha, o que é bom - meu ruim -, mas ter todas as teclas enviadas ao módulo de código e destruir meu código é completamente inaceitável.

Alguém tem alguma idéia aqui? Pode -se travar completamente o código ao executar hospedado no Visual Studio enquanto compilou uma CPU de 32 bits?

Algumas postagens relacionadas sobre esse assunto, mas nenhuma das quais aborda diretamente isso:

Agradecemos antecipadamente por qualquer ajuda ou idéias ...

Mike

Foi útil?

Solução

Aqui está o melhor que eu poderia inventar. Funciona, mas existem algumas etapas que você pode não querer.

Essencialmente, a técnica é definir os arquivos do seu projeto apenas para leitura quando você executa o aplicativo e, em seguida, defina-os de volta como gravável assim que seu aplicativo terminar.

No entanto, no vs2k8, por padrão, a configuração de um arquivo para somente leitura ainda permite editar o arquivo. Você precisa primeiro desativar a configuração "Permitir edição de arquivos somente leitura ..." em Ferramentas> Opções> Ambiente> Documentos.

Segundo, você precisa adicionar a seguinte chave ao registro como DWORD e definir seu valor como 1:

HKCU\Sofware\Microsoft\Visual Studio\9.0\Source Control\UncontrolledInMemoryEditDialogSuppressed  

este ainda não vai funcionar completamente. O que você precisa fazer é definir seu controle de origem para esse projeto como a fonte visual segura. (<- Esta é a etapa que estou assumindo que você não vai gostar.)

Em seguida, reinicie vs2k8.

Neste ponto, se você definir um de seus arquivos apenas para leitura, verá que o Visual Studio não permitirá que você edite esse arquivo. Quando você tenta, ele toca a música de exceção do seu computador.

Agora, para tornar seus arquivos somente leitura quando você executa o aplicativo, defina um processo pós-construção para fazer isso. Isso é fácil.

Mais difícil, é colocá -los de volta para gravidade quando o aplicativo terminar de execução. A solução mais simples é provavelmente um atalho de arquivo em lote.

Outras dicas

Aqui está um truque que eu uso no Visual Studio 2005 (não tenha chance de testar no Visual Studio 2008, mas deve funcionar):

  • Abra as propriedades da Assembléia Executável
  • Vou ao Depurar aba
  • Verifica a Ativar depuração de código não gerenciada Caixa de seleção

Os documentos do código devem permanecer bloqueados, mesmo quando um ponto de interrupção é atingido, e qualquer tentativa de mudar deve acionar um pop -up dizendo "As alterações não são permitidas quando a depuração não gerenciada está ativada".

Ei - desculpe, não posso ajudá -lo a travar completamente seu código - tenho o desejo oposto: desbloqueá -lo completamente durante a depuração, mas posso ajudá -lo com sua segunda edição.

Sugiro que você considere verificar a janela ativa antes de enviar qualquer chaves e, se a janela ativa for diferente do seu site de destino, pause a execução do seu teste até que o foco seja retornado que essa janela.

Eu sei que não é a solução que você deseja, mas provavelmente não faria mal a evitar outros problemas semelhantes.

Boa sorte!

Adão

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