Condividi tramite


Peverify.exe (strumento PEVerify)

Lo strumento PEVerify consente agli sviluppatori che generano in linguaggio MSIL (Microsoft Intermediate Language), ad esempio i writer di compilatori, gli sviluppatori di motori di script e così via, di determinare se il codice MSIL creato e i metadati associati soddisfano i requisiti di indipendenza dai tipi. Alcuni compilatori generano codice di cui è verificabile l'indipendenza dai tipi solo se si evita di utilizzare determinati costrutti del linguaggio. Se, in qualità di sviluppatore, si utilizza un compilatore di questo tipo, sarà opportuno verificare di non aver compromesso l'indipendenza dai tipi del codice. In questa situazione è possibile eseguire lo strumento PEVerify sui file per controllare il codice MSIL e i metadati.

Questo strumento viene installato automaticamente con Visual Studio e con Windows SDK. Per eseguire lo strumento, si consiglia di utilizzare il prompt dei comandi di Visual Studio o il prompt dei comandi di Windows SDK (shell di CMD). Queste utilità consentono di eseguire facilmente lo strumento, senza dover passare alla cartella di installazione. Per ulteriori informazioni, vedere Prompt dei comandi di Visual Studio e Windows SDK.

  • Se si dispone di Visual Studio installato sul computer: nella barra delle applicazioni, fare clic su Start, fare clic su All Programs, fare clic su Visual Studio, fare clic su Visual Studio Tools e quindi su Visual Studio Command Prompt.

    In alternativa

    Se si dispone di Windows SDK installato sul computer: nella barra delle applicazioni, fare clic su Start, fare clic su All Programs, fare clic sulla cartella di Windows SDK e quindi su Command Prompt (o CMD Shell).

  • Al prompt dei comandi digitare quanto segue:

peverify filename [options]

Parametri

Argomento

Oggetto di descrizione

nomefile

Il file eseguibile portabile (PE, Portable Executable) per il quale controllare il codice MSIL e i metadati.

Opzione

Oggetto di descrizione

/break=conteggioNumMaxErr

Interrompe la verifica al superamento di numeroErroriMax.

Questo parametro non è supportato in .NET Framework 2.0 o versione successiva.

/clock

Misura e riferisce i seguenti tempi di verifica in millisecondi:

MD Val. cycle

Ciclo di convalida dei metadati

MD Val. pure

Pure di convalida dei metadati

IL Ver. cycle

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 riflettono il tempo richiesto solo per l'esecuzione della convalida e della verifica.

/help

Visualizza la sintassi e le opzioni dei comandi dello strumento.

/hresult

Visualizza i codici di errore in formato esadecimale.

/ignore=codice.esadecimale [, codice.esadecimale]

Ignora i codici di errore specificati.

/ignore=@filedirisposta

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 nomefile. Vengono restituite descrizioni dettagliate per ciascun problema rilevato, a meno che non si specifichi l'opzione /quiet.

/md

Esegue controlli di convalida dei metadati sull'assembly specificato da nomefile. Esamina l'intera struttura dei metadati nel file e riferisce tutti i problemi di convalida verificatisi.

/nologo

Evita la visualizzazione delle informazioni sul copyright e sulla versione del prodotto.

/nosymbols

In .NET Framework versione 2.0 evita la visualizzazione dei numeri di riga per 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

Verificare solo i metodi trasparenti.

/unique

Ignora i codici di errore ripetuti.

/verbose

In .NET Framework versione 2.0 determina la visualizzazione di informazioni aggiuntive nei messaggi di verifica MSIL.

/?

Visualizza la sintassi e le opzioni dei comandi dello strumento.

Note

Common Language Runtime si basa sull'esecuzione indipendente dai tipi del codice applicativo 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 in modo da consentire l'esecuzione di codice attendibile ma non verificabile.

Se non sono state specificate né l'opzione /md/il, verranno eseguiti entrambi i tipi di controllo, iniziando dai controlli /md. Se non si verificano errori, vengono effettuati i controlli /il. Se si specificano sia /md che /il, i controlli /il verranno effettuati anche in presenza di errori nei metadati. Pertanto, in assenza di errori nei metadati, peverify nomefile sarà equivalente a peverify nomefile /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 "Specifiche di convalida metadati" e "Specifiche del set di istruzioni MSIL" nella cartella "Tools Developers Guide" di Windows Software Development Kit (SDK).

Si noti che in .NET Framework 2.0 o versione successiva sono supportate restituzioni byref verificabili specificate mediante le seguenti istruzioni MSIL: dup, ldsflda, ldflda, 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

Vedere anche

Riferimenti

Prompt dei comandi di Visual Studio e Windows SDK

Concetti

Scrittura di codice indipendente dai tipi verificabile

Indipendenza dai tipi e sicurezza

Altre risorse

Strumenti di .NET Framework

Cronologia delle modifiche

Data

Cronologia

Motivo

Aprile 2011

Sono state aggiunte informazioni sull'utilizzo di Visual Studio e dei prompt dei comandi di Windows SDK.

Miglioramento delle informazioni.