Domanda

Mi chiedevo se ci fosse un modo per bloccare completamente il mio codice durante il debug all'interno di Visual Studio 2008. I documenti di codice di blocco automaticamente durante l'esecuzione di applicazioni a 64 bit, che io preferisco di gran lunga; tuttavia, io faccio parte della mia codifica fare add-in per Excel, che è a 32 bit. Il risultato è che, anche se a indirizzare 'AnyCPU', l'host VS sa che è in esecuzione all'interno di un processo a 32 bit e, di conseguenza, il codice sorgente è non bloccato mentre il codice viene eseguito ospitato in Visual Studio.

Posso disattivare Modifica e continuazione andando in Strumenti> Opzioni> Debugging> Modifica e continuazione, e quindi deselezionando la 'Modifica Enabled e continua' casella di controllo. Questo non blocca completamente il codice, tuttavia. Questo impedisce ad eventuali modifiche nel codice venga eseguito nel corrente run, ma non impedisce clic del mouse o combinazioni di tasti dalla realtà modifica del codice.

Ancora, quando si lavora con applicazioni a 64 bit ciò non si verifica - il codice è completamente bloccato. Io preferisco di gran lunga il codice per essere completamente bloccato per almeno un paio di motivi:

  1. posso accidentalmente colpito una chiave o simili durante il debug, che io sicuramente non voglio fare. E 'raro, ma è un problema.

  2. Molti dei miei test automatizzati guidare l'interfaccia utente tramite SendKeys. Quando si passa attraverso una tale prova utilizzando il debugger, tuttavia, posso dimenticare che a volte alcuni degli aspetti coinvolgono SendKeys, il che significa che le battiture finiscono sempre inviata alla IDE di Visual Studio invece di Excel.

Nel numero 2, in precedenza, il test di unità non riesce, che va bene - il mio male -. Ma avere tutti i tasti inviati al modulo di codice e distruggendo il mio codice è assolutamente inaccettabile

Qualcuno ha qualche idea qui? Si può bloccare completamente il codice durante l'esecuzione ospitato in Visual Studio, mentre compilato contro una CPU a 32 bit?

Alcuni messaggi relativi a questa questione, ma nessuno dei quali affrontare direttamente questo:

Grazie in anticipo per qualsiasi aiuto o idee ...

Mike

È stato utile?

Soluzione

Ecco il meglio che ho potuto trovare. Funziona, ma ci sono alcuni passaggi non si può desiderare di prendere.

In sostanza, la tecnica è quello di impostare i file del tuo progetto di sola lettura quando si esegue l'applicazione, e quindi impostare di nuovo al scrivibile una volta che l'applicazione si conclude.

Tuttavia, in VS2k8, per impostazione predefinita, l'impostazione di un file di sola lettura consente ancora di modificare il file. È necessario attivare in primo luogo fuori l'impostazione "consentire la modifica di file di sola lettura ..." in Strumenti> Opzioni> Ambiente> Documenti.

In secondo luogo, è necessario aggiungere la seguente chiave al Registro di sistema come un valore DWORD e impostare il suo valore a 1:

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

Questo ancora non funziona completamente. Quello che poi dovete fare è impostare il controllo del codice sorgente per il progetto a Visual Source Safe. (<-. Questo è il passo che sto supponendo che non vi piace)

Quindi riavviare VS2k8.

A questo punto se si imposta uno dei file di sola lettura, si vedrà che Visual Studio non ti consente di modificare questo file a tutti. Quando si tenta, si suona musica eccezione del computer.

Ora, per rendere il vostro file di sola lettura quando si esegue l'applicazione, impostare un processo di post-generazione per fare questo. Questo è facile.

Più difficile, è quello di impostare di nuovo al scrivibile una volta la vostra applicazione termina l'esecuzione. La soluzione più semplice è probabilmente un collegamento file batch.

Altri suggerimenti

Ecco un trucco che uso in Visual Studio 2005 (non hanno la possibilità di testare in Visual Studio 2008, ma dovrebbe funzionare):

  • Apri le proprietà del montaggio eseguibile
  • Vai Debug
  • Controllare la Attiva il debug non gestito codice casella di controllo

I documenti di codice dovrebbe rimanere bloccato, anche se un punto di interruzione viene colpito, e ogni tentativo di cambiare dovrebbe innescare un popup dicendo "Le modifiche non sono consentiti quando il debug non gestito è abilitato" .

Hey there - mi dispiace non posso aiutarti con bloccaggio completamente il codice - ho il desiderio opposto:. Per SBLOCCARE completamente durante il debug, ma posso aiutarvi con il vostro secondo numero

Vi suggerisco di prendere in considerazione il controllo della finestra attiva prima di inviare qualsiasi chiave e se la finestra attiva è diverso dal sito di destinazione, mettere in pausa l'esecuzione del test fino a quando viene restituito attenzione che quella finestra.

Lo so che non è la soluzione che si desidera, ma probabilmente non sarebbe male per evitare che altri problemi simili.

Buona fortuna!

Adam

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top