Peverify.exe (strumento PEVerify)

Lo strumento PEVerify consente agli sviluppatori che generano Microsoft Intermediate Language (MSIL), ad esempio writer del compilatore e sviluppatori del motore di script, di determinare se il codice MSIL e i metadati associati soddisfano i requisiti di sicurezza dei tipi. Alcuni compilatori generano codice di cui è verificabile l'indipendenza dai tipi solo se si evita di utilizzare determinati costrutti del linguaggio. Se si usa un compilatore di questo tipo, è possibile verificare che non sia stata compromessa la sicurezza dei tipi del codice. È possibile eseguire lo strumento PEVerify nei file per controllare MSIL e i metadati.

Viene installato automaticamente con Visual Studio. Per eseguire lo strumento, usare il prompt dei comandi per gli sviluppatori di Visual Studio o Visual Studio Developer PowerShell.

Sintassi

peverify filename [options]

Parametri

Argomento Descrizione
filename File eseguibile di tipo PE per il quale controllare il codice MSIL e i metadati.
Opzione Descrizione
/break=maxErrorCount Interrompe la verifica dopo un numero di errori pari a maxErrorCount.

Questo parametro non è supportato in .NET Framework 2.0 o versione successiva.
/clock Misura e segnala i seguenti tempi di verifica in millisecondi:

MD Val. ciclo
Ciclo di convalida dei metadati

MD Val. pure
Pure di convalida dei metadati

IL Ver. ciclo
Ciclo di verifica di MSIL (Microsoft Intermediate Language)

IL Ver pure
Pure di verifica MSIL

I tempi MD Val. cycle e IL Ver. cycle includono il tempo richiesto per l'esecuzione delle procedure di avvio e chiusura necessarie. I tempi MD Val. pure e IL Ver pure corrispondono al tempo richiesto solo per l'esecuzione della convalida o della verifica.
/help Visualizza la sintassi e le opzioni di comando dello strumento.
/hresult Visualizza i codici di errore in formato esadecimale.
/ignore=hex.code [, hex.code] Ignora i codici di errore specificati.
/ignore=@responseFile Ignora i codici di errore elencati nel file di risposta specificato.
/il Esegue i controlli di verifica dell'indipendenza dai tipi del codice MSIL per i metodi implementati nell'assembly specificato da filename. Vengono restituite descrizioni dettagliate per ogni problema rilevato, a meno che non si specifichi l'opzione /quiet.
/md Esegue controlli di convalida dei metadati sull'assembly specificato da filename. Questa opzione illustra la struttura completa dei metadati all'interno del file e segnala tutti i problemi di convalida riscontrati.
/nologo Evita la visualizzazione delle informazioni sul copyright e sulla versione del prodotto.
/nosymbols In .NET Framework versione 2.0, elimina i numeri di riga per garantire la compatibilità con le versioni precedenti.
/quiet Specifica la modalità non interattiva. Evita la visualizzazione dell'output dei report dei problemi di verifica. Viene comunque indicato se il file è indipendente dai tipi, ma non vengono fornite informazioni sui problemi che impediscono la verifica dell'indipendenza dai tipi.
/transparent Verifica solo i metodi trasparenti.
/unique Ignora i codici di errore ripetuti.
/verbose In .NET Framework versione 2.0 vengono visualizzate informazioni aggiuntive nei messaggi di verifica MSIL.
/? Visualizza la sintassi e le opzioni di comando dello strumento.

Osservazioni:

Common Language Runtime si basa sull'esecuzione indipendente dai tipi del codice dell'applicazione per applicare meccanismi di sicurezza e isolamento. In genere il codice di cui non è verificabile l'indipendenza dai tipi non può essere eseguito, anche se è possibile impostare criteri di sicurezza per consentire l'esecuzione del codice attendibile ma non verificabile.

Se non sono state specificate né l'opzione /md né l'opzione /il verranno eseguiti entrambi i tipi di controllo, iniziando dai controlli /md. Se non sono presenti errori vengono effettuati i controlli /il. Se si specifica sia /md sia /il i controlli /il vengono effettuati anche in presenza di errori nei metadati. Pertanto in assenza di errori nei metadati, peverifyfilename è equivalente a peverifyfilename/md/il.

Mediante Peverify.exe vengono eseguiti controlli di verifica completi del codice MSIL sulla base dell'analisi del flusso di dati nonché di un elenco di alcune centinaia di regole sui metadati validi. Per informazioni dettagliate sui controlli eseguiti da Peverify.exe, vedere le specifiche di convalida dei metadati e le specifiche del set di istruzioni MSIL nella cartella "Tools Developers Guide" di Windows SDK.

.NET Framework versione 2.0 o successiva supporta i risultati verificabili byref specificati usando le istruzioni MSIL seguenti: dup, ldsfldaldflda, ldelema, call, e unbox.

Esempi

Il comando che segue esegue controlli di convalida dei metadati e controlli di verifica dell'indipendenza dai tipi del codice MSIL per i metodi implementati nell'assembly myAssembly.exe.

peverify myAssembly.exe /md /il

Al completamento della richiesta precedente, viene visualizzato il messaggio che segue.

All classes and methods in myAssembly.exe Verified

Il comando che segue esegue controlli di convalida dei metadati e controlli di verifica dell'indipendenza dai tipi del codice MSIL per i metodi implementati nell'assembly myAssembly.exe. Viene visualizzato il tempo necessario per l'esecuzione di questi controlli.

peverify myAssembly.exe /md /il /clock

Al completamento della richiesta precedente, viene visualizzato il messaggio che segue.

All classes and methods in myAssembly.exe Verified
Timing: Total run     320 msec
        MD Val.cycle  40 msec
        MD Val.pure   10 msec
        IL Ver.cycle  270 msec
        IL Ver.pure   230 msec

Il comando che segue esegue controlli di convalida dei metadati e controlli di verifica dell'indipendenza dai tipi del codice MSIL per i metodi implementati nell'assembly myAssembly.exe. Tuttavia, Peverify.exe si arresta quando raggiunge il conteggio di errori massimo di 100. Lo strumento ignora inoltre i codici di errore specificati.

peverify myAssembly.exe /break=100 /ignore=0x12345678,0xABCD1234

Il comando che segue produce lo stesso risultato dell'esempio precedente, ma specifica i codici di errore da ignorare nel file di risposta ignoreErrors.rsp.

peverify myAssembly.exe /break=100 /ignore@ignoreErrors.rsp

Il file di risposta può contenere un elenco di codici di errore separati da virgole.

0x12345678, 0xABCD1234

In alternativa, il file di risposta può essere formattato con un codice di errore per riga.

0x12345678
0xABCD1234

Vedi anche