Peverify.exe (PEVerify-Tool)
Mit dem PEVerify-Tool können Entwickler, die MSIL (Microsoft Intermediate Language) generieren (wie Compilerentwickler und Skript-Engine-Entwickler), herausfinden, ob ihr 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 einen solchen Compiler verwenden, sollten Sie unter Umständen prüfen, ob die Typsicherheit des Codes beeinträchtigt wurde. Sie können das PEVerify-Tool für die Dateien ausführen und damit die MSIL und Metadaten überprüfen.
Dieses Tool wird automatisch mit Visual Studio installiert. Um das Tool auszuführen, verwenden Sie die Developer-Eingabeaufforderung von Visual Studio oder Visual Studio Developer PowerShell.
Syntax
peverify filename [options]
Parameter
Argument | Beschreibung |
---|---|
filename | Die portierbare ausführbare Datei (Portable Executable, PE), 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 meldet die folgenden Überprüfungszeiten in Millisekunden: MD Val. cycle Validierungszyklus der Metadaten MD Val. pure Reine Metadatenvalidierung IL Ver. cycle Überprüfungszyklus der Microsoft Intermediate Language (MSIL) IL Ver pure Reine MSIL-Überprüfung Die Zeiten MD Val. cycle und IL Ver. cycle umfassen die Zeit, die erforderlich ist, um die notwendigen Prozeduren zum Starten und Herunterfahren auszuführen. Die Zeiten MD Val. pure und IL Ver pure umfassen die Zeit, die erforderlich ist, um nur die Validierung oder Überprüfung auszuführen. |
/help | Zeigt Befehlssyntax und Optionen für das Tool an. |
/hresult | Zeigt Fehlercodes im Hexadezimalformat 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 dateiname 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 Dateiname angegebenen Assembly aus. Bei dieser Option wird die gesamte Metadatenstruktur in der Datei durchlaufen und über alle gefundenen 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" meldet weiterhin, ob die Datei typsicher ist, es werden jedoch keine Informationen zu Problemen ausgegeben, die die Überprüfung der Typsicherheit verhindern. |
/transparent |
Überprüfen Sie nur die transparenten Methoden. |
/unique | Ignoriert wiederholt auftretende Fehlercodes. |
/verbose | Zeigt in .NET Framework, Version 2.0, zusätzliche Informationen in MSIL-Überprüfungsmeldungen an. |
/? | Zeigt 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. „everify.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 stimmt peverify filename mit 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. Detaillierte Informationen zu den von „Peverify.exe“ ausgeführten Überprüfungen finden Sie im Windows SDK im Ordner „Tools Developers Guide“ unter „Metadata Validation Specification“ und „MSIL Instruction Set Specification“.
.NET Framework, Version 2.0 oder höher, unterstützt überprüfbare byref
-Rückgaben, 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 myAssembly.exe
-Assembly 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 myAssembly.exe
-Assembly 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 myAssembly.exe
-Assembly implementiert sind. "Peverify.exe" wird jedoch beendet, wenn es die maximale Fehleranzahl von 100 erreicht. Das Tool ignoriert auch 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 Trennzeichen getrennte Liste von Fehlercodes enthalten.
0x12345678, 0xABCD1234
Wahlweise kann die Antwortdatei auch mit einem Fehlercode pro Zeile formatiert werden.
0x12345678
0xABCD1234