PEVerify-Tool (Peverify.exe)

Mit dem PEVerify-Tool können Entwickler, die MSIL (Microsoft Intermediate Language) generieren (Compilerwriter, Skriptmodulentwickler usw.), bestimmen, ob der MSIL-Code und die zugeordneten Metadaten den Anforderungen an die Typsicherheit entsprechen. Einige Compiler generieren nur dann überprüfbar typsicheren Code, wenn bestimmte Sprachkonstrukte nicht verwendet werden. Wenn Sie als Entwickler einen solchen Compiler verwenden, sollten Sie u. U. prüfen, ob die Typsicherheit des Codes eingeschränkt wurde. Hierzu können Sie das PEVerify-Tool für die Dateien ausführen und damit MSIL und Metadaten überprüfen.

peverify filename [options]

Parameter

Argument Beschreibung

filename

Die PE-Datei (Portable Executable), deren MSIL und Metadaten überprüft werden sollen.

Option Beschreibung

/break= maxErrorCount

Bricht die Überprüfung nach maxErrorCount Fehlern ab.

Dieser Parameter wird in .NET Framework, Version 2.0 oder höher, nicht unterstützt.

/clock

Erfasst und berichtet die folgenden Überprüfungszeiten in Millisekunden:

MD-Validierungszyklus (MD Val. cycle)

Validierungszyklus der Metadaten

Reine MD-Validierung (MD Val. pure)

Reine Metadatenvalidierung

IL-Überprüfungszyklus (IL Ver. cycle)

Überprüfungszyklus der Microsoft Intermediate Language (MSIL)

Reine IL-Überprüfung (IL Ver. cycle)

Reine MSIL-Überprüfung

Die MD Val. cycle- und IL Ver. cycle-Zeiten umfassen die Zeit, die erforderlich ist, um die erforderlichen Prozeduren zum Starten und Herunterfahren auszuführen. Die MD Val. pure- und IL Ver pure-Zeiten umfassen die Zeit, die erforderlich ist, um nur die Validierung oder Überprüfung auszuführen.

/help

Zeigt die Befehlssyntax und Optionen für das Tool an.

/hresult

Zeigt Fehlercodes im hexadezimalen Format an.

/ignore= hex.code [, hex.code]

Ignoriert die angegebenen Fehlercodes.

/ignore=@ responseFile

Ignoriert die in der angegebenen Antwortdatei aufgelisteten Fehlercodes.

/il

Führt Überprüfungen der MSIL-Typsicherheit für Methoden durch, die in der durch filename angegebenen Assembly implementiert sind. Das Tool gibt eine detaillierte Beschreibung aller gefundenen Probleme zurück, sofern Sie nicht die /quiet-Option angeben.

/md

Führt Validierungen von Metadaten in der durch filename angegebenen Assembly aus. Dabei wird die gesamte Metadatenstruktur in der Datei durchlaufen und über alle Validierungsprobleme berichtet.

/nologo

Unterdrückt die Anzeige der Produktversion sowie von Copyrightinformationen.

/nosymbols

Unterdrückt in .NET Framework, Version 2.0, Zeilennummern, um Abwärtskompatibilität zu gewährleisten.

/quiet

Gibt den stillen Modus an. Hierbei wird die Ausgabe von Berichten über die während der Überprüfung gefundenen Probleme unterdrückt. Peverify.exe berichtet weiterhin über die Typsicherheit der Datei, es werden jedoch keine Informationen zu Problemen ausgegeben, die die Überprüfung der Typsicherheit verhindern.

/unique

Ignoriert wiederholt auftretende Fehlercodes.

/verbose

Zeigt in .NET Framework, Version 2.0, zusätzliche Informationen in MSIL-Überprüfungsmeldungen an.

/?

Zeigt die Befehlssyntax und Optionen für das Tool an.

Hinweise

Die Common Language Runtime erfordert die typsichere Ausführung von Anwendungscode, um Sicherheits- und Isolierungsmechanismen zu erzwingen. Normalerweise kann Code, der nicht überprüfbar typsicher ist, nicht ausgeführt werden. Sie können jedoch die Sicherheitsrichtlinie so festlegen, dass vertrauenswürdiger, aber nicht überprüfbarer Code ausgeführt wird.

Wenn weder die /md-Option noch die /il-Option angegeben wurde, führt Peverify.exe beide Überprüfungen durch. Peverify.exe führt zuerst /md-Überprüfungen aus. Wenn keine Fehler auftreten, werden /il-Überprüfungen durchgeführt. Wenn Sie /md und /il angeben, werden auch /il-Überprüfungen durchgeführt, wenn in den Metadaten Fehler vorhanden sind. Daher stimmen peverify filename und peverify filename /md /il überein, wenn die Metadaten nicht fehlerhaft sind.

Peverify.exe führt umfangreiche MSIL-Überprüfungen anhand der Datenflussanalyse sowie einer Liste mit mehreren hundert Regeln für die Gültigkeit von Metadaten durch. Ausführliche Informationen zu den Überprüfungen durch Peverify.exe finden Sie unter "Metadata Validation Specification" und "MSIL Instruction Set Specification" im Ordner Tools Developers Guide von .NET Framework SDK.

Beachten Sie, dass .NET Framework, Version 2.0 oder höher, überprüfbare byref-Rückgaben unterstützt, die unter Verwendung der folgenden MSIL-Anweisungen angegeben werden: dup, ldsflda, ldflda, ldelema, call und unbox.

Beispiele

Der folgende Befehl validiert Metadaten und verifiziert die MSIL-Typsicherheit von Methoden, die in der Assembly myAssembly.exe implementiert sind.

peverify myAssembly.exe /md /il

Wenn diese Anforderung erfolgreich ausgeführt wurde, zeigt Peverify.exe die folgende Meldung an.

All classes and methods in myAssembly.exe Verified

Der folgende Befehl validiert Metadaten und verifiziert die MSIL-Typsicherheit von Methoden, die in der Assembly myAssembly.exe implementiert sind. Das Tool zeigt an, wie viel Zeit zur Durchführung dieser Überprüfungen erforderlich ist.

peverify myAssembly.exe /md /il /clock

Wenn diese Anforderung erfolgreich ausgeführt wurde, zeigt Peverify.exe die folgende Meldung an.

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

Der folgende Befehl validiert Metadaten und verifiziert die MSIL-Typsicherheit von Methoden, die in der Assembly myAssembly.exe implementiert sind. Peverify.exe wird bei Erreichen der maximalen Fehleranzahl von 100 jedoch angehalten. Außerdem ignoriert das Tool die angegebenen Fehlercodes.

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

Der folgende Befehl führt zum gleichen Ergebnis wie das vorherige Beispiel, nur werden hier die in der Antwortdatei ignoreErrors.rsp zu ignorierenden Fehlercodes angegeben.

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

Die Antwortdatei kann eine durch Komma getrennte Liste von Fehlercodes enthalten.

0x12345678, 0xABCD1234

Wahlweise kann die Antwortdatei auch mit einem Fehlercode pro Zeile formatiert werden.

0x12345678
0xABCD1234

Siehe auch

Referenz

.NET Framework-Tools
SDK-Eingabeaufforderung

Konzepte

Schreiben von überprüfbar typsicherem Code
Typsicherheit und Sicherheit