Condividi tramite


Strumentazione e ripetizione della firma di assembly

Aggiornamento: novembre 2007

Se è necessario raccogliere informazioni di code coverage durante il test del codice di un assembly, è innanzitutto necessario instrumentare tale assembly. Con il processo di strumentazione viene aggiunto codice che genera informazioni di code coverage nell'assembly. Per informazioni sulla strumentazione di assembly per il code coverage, vedere Procedura: ottenere dati di code coverage.

Se tuttavia l'assembly che si sta testando è stato firmato con un nome sicuro, la modifica del codice causata dalla strumentazione invalida la firma. Quindi Visual Studio tenta automaticamente di ripetere la firma dell'assembly immediatamente dopo il passaggio della strumentazione.

Nota:

Per ulteriori informazioni sui passaggi che si verificano in un'esecuzione di test, vedere Cenni preliminari sulla distribuzione dei test.

Se la ripetizione della firma riesce, è probabile che l'esecuzione dei test venga completata con risultati corretti. In caso contrario, verrà generato un errore analogo al seguente:

Strong name verification failed for the instrumented assembly 'SignedLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1696e096eba75082'. Please ensure that the right key file for re-signing after instrumentation is specified in the test run configuration.

Per correggere l'errore, attenersi alla seguente procedura:

  • Ripetere la firma dell'assembly. Se si dispone del file di chiave utilizzato per firmare l'assembly, è possibile specificarlo in modo che Visual Studio possa ripetere automaticamente la firma dell'assembly.

  • Disattivare la verifica della firma. È possibile disattivare la verifica della firma nel computer in cui esegue il test dell'assembly. Questa azione si applica solo agli assembly specificati.

Ripetere la firma dell'assembly

Nella pagina Code coverage dell'editor di configurazione di esecuzione dei test, è possibile specificare un file di chiave per la ripetizione della firma dei binari dopo la strumentazione. Se si stanno testando più assembly firmati, Visual Studio tenterà di ripetere la firma di tutti gli assembly con nome sicuro che erano stati firmati con il file di chiave specificato.

Nell'editor di configurazione di esecuzione dei test è possibile specificare un file di chiave che verrà utilizzato da Visual Studio per ripetere la firma degli assembly con nome sicuro. Per ulteriori informazioni, vedere la procedura "Ripetere la firma di assembly" nell'argomento Procedura: ottenere dati di code coverage. Specificando un file di chiave, nel processo di esecuzione dei test viene aggiunto un passaggio di ripetizione della firma. Visual Studio determinerà automaticamente quali assembly devono essere firmati di nuovo utilizzando il file di chiave specificato. Verrà ripetuta la firma di tutti gli assembly che possono essere firmati di nuovo con questo file di chiave.

Nota:

Gli assembly possono essere firmati di nuovo solo utilizzando un file di chiave, non un nome di chiave.

La ripetizione della firma di assembly non sarà completa o non può essere eseguita nei seguenti casi:

  • Se il file di chiave non è disponibile, Visual Studio non è in grado di firmare di nuovo l'assembly. È possibile tentare di rigenerare il file di chiave e quindi provare a firmare di nuovo l'assembly.

  • Se il file di chiave è protetto da password, non è possibile ripetere la firma.

  • Per ogni esecuzione di test è supportato un unico file di chiave. Si supponga, ad esempio, che un'esecuzione di test faccia riferimento a diversi assembly. Alcuni di questi assembly sono stati firmati utilizzando un file di chiave, mentre altri sono stati firmati con un file di chiave diverso. Poiché è possibile scegliere un unico file di chiave, gli assembly che richiedono l'altro file non verranno firmati di nuovo e sarà necessario eseguire questa operazione manualmente. Se alcuni assembly vengono lasciati senza firma, verrà generato un errore a livello di esecuzione di test. In questo caso, è possibile scegliere di disattivare la verifica della firma, come descritto in Disattivare la verifica della firma.

Disattivare la verifica della firma

Se non è possibile ripetere la firma, ad esempio se il file di chiave corretto non è disponibile, è possibile scegliere di disattivare la verifica della firma per l'assembly corrente per la durata dell'esecuzione dei test. Per eseguire questa operazione, utilizzare lo Strumento Nome sicuro (Sn.exe) con l'opzione –Vr, come illustrato di seguito:

SN -Vr <nome assembly>

La verifica dei nomi sicuri viene disattivata, solo per l'assembly specificato, nel computer in cui viene eseguito il comando.

Nota:

Se si eseguono test in modalità remota ed è necessario disattivare la verifica della firma, includere il comando SN.exe negli script di installazione e di pulitura che verranno eseguiti nel computer remoto.

È possibile eseguire questa operazione solo se si dispone di autorizzazioni sufficienti.

Al termine dell'esecuzione dei test, riattivare la verifica della firma. Per eseguire questa operazione, utilizzare il comando SN.exe con l'opzione –Vu, come illustrato di seguito:

SN -Vu <nome assembly>

Per disattivare e riattivare la verifica della firma, si consiglia di utilizzare i comandi SN.exe negli script. È possibile disattivare la verifica in uno script di installazione e riattivarla in uno script di pulitura.

Nota:

È importante riattivare la verifica della firma. In caso contrario, si possono verificare problemi di sicurezza.

Dopo aver inserito i comandi SN in file di script distinti, specificare tali file nella pagina Script di installazione e pulitura dell'editor di configurazione di esecuzione dei test. Per ulteriori informazioni, vedere Procedura: specificare la configurazione di esecuzione di un test. Per informazioni sull'ordine in cui eseguire questi e altri passaggi in un'esecuzione di test, vedere Cenni preliminari sulla distribuzione dei test.

Vedere anche

Attività

Procedura: specificare la configurazione di esecuzione di un test

Procedura: ottenere dati di code coverage

Procedura: firmare un assembly con un nome sicuro

Concetti

Cenni preliminari sulla distribuzione dei test

Assembly con nomi sicuri

Riferimenti

Strumento Nome sicuro (Sn.exe)