PEVerify 工具 (Peverify.exe)

更新:2007 年 11 月

PEVerify 工具可以協助產生 Microsoft Intermediate Language (MSIL) 的開發人員 (例如編譯器撰寫者、指令碼引擎開發人員等) 判斷其 MSIL 程式碼和相關中繼資料 (Metadata) 是否符合型別安全 (Type Safety) 需求。只有在避免使用某些語言建構時,某些編譯器才能產生可驗證型別安全程式碼。如果您是一位正在使用這類編譯器的開發人員,可能想要驗證您尚未放棄型別安全的程式碼。在這種情況下,您可以在檔案上執行 PEVerify 工具來檢查 MSIL 和中繼資料。

peverify filename [options]

參數

引數

描述

filename

要檢查 MSIL 和中繼資料的可移植的執行檔 (PE)。

選項

描述

/break=maxErrorCount

在發生 maxErrorCount 錯誤之後,中止驗證。

.NET Framework 2.0 (含) 以後版本不支援此參數。

/clock

以毫秒為單位測量並報告下列驗證時間:

MD Val. cycle

中繼資料驗證週期

MD Val. pure

中繼資料純驗證

IL Ver. cycle

Microsoft Intermediate Language (MSIL) 驗證週期

IL Ver pure

MSIL 純驗證

MD Val. cycleIL Ver. cycle 時間包括了執行必要啟動和關閉程序所需的時間。MD Val. pureIL Ver pure 時間則是反映純粹執行驗證所需的時間。

/help

顯示工具的命令語法和選項。

/hresult

以十六進位格式顯示錯誤碼。

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

忽略特定的錯誤碼。

/ignore=@responseFile

忽略列於特定回應檔 (Response File) 中的錯誤碼。

/il

為方法執行 MSIL 型別安全驗證檢查,而這個方法是在 filename 所指定的組件中實作。除非您指定 /quiet 選項,否則此工具會針對每個已找出的問題傳回詳細的描述。

/md

filename 所指定的組件上執行中繼資料驗證檢查。這會逐步檢查檔案內的所有中繼資料結構,並報告所有發現的驗證問題。

/nologo

隱藏產品版本和著作權資訊的顯示。

/nosymbols

在 .NET Framework 2.0 版中,隱藏回溯相容性 (Backward Compatibility) 的行號。

/quiet

指定安靜模式;隱藏驗證問題報告的輸出。Peverify.exe 仍會報告檔案是否為型別安全,但不會報告阻礙型別安全驗證的資訊。

/unique

忽略重複的錯誤碼。

/verbose

在 .NET Framework 2.0 版中,在 MSIL 驗證訊息中顯示其他資訊。

/?

顯示工具的命令語法和選項。

備註

Common Language Runtime 可以透過應用程式之程式碼的型別安全執行,來協助強制安全性和隔離性機制。正常情況下,不是可驗證的型別安全的程式碼無法執行,但是您可以設定安全性原則來讓受信任但無法驗證的程式碼執行。

如果 /md/il 兩個選項都未指定,則 Peverify.exe 會執行這兩種檢查。Peverify.exe 會先執行 /md 檢查。如果沒有任何錯誤,則會執行 /il 檢查。如果有指定 /md/il 兩者,則即使在中繼資料中有錯誤,還是會執行 /il 檢查。因此,如果中繼資料沒有錯誤,peverify filename 會相當於 peverifyfilename**/md/il**。

Peverify.exe 會依據資料流分析加上有效中繼資料上數百個規則的清單,執行綜合性的 MSIL 驗證檢查。如需 Peverify.exe 所執行檢查的詳細資訊,請參閱 Windows Software Development Kit (SDK) 的 Tools Developers Guide 資料夾中的<中繼資料驗證規格>和<MSIL 指令集規格>。

請注意,.NET Framework 2.0 版 (含) 以後版本會支援可驗證的 byref 傳回,是使用下列 MSIL 指令所指定:dup、ldsflda、ldflda、ldelema、call 和 unbox。

範例

下列命令會對 myAssembly.exe 組件中實作的方法,執行中繼資料驗證檢查和 MSIL 型別安全驗證檢查。

peverify myAssembly.exe /md /il

在成功完成上述要求之後,Peverify.exe 會顯示下列訊息。

All classes and methods in myAssembly.exe Verified

下列命令會對 myAssembly.exe 組件中實作的方法,執行中繼資料驗證檢查和 MSIL 型別安全驗證檢查。工具會顯示執行這些檢查所需的時間。

peverify myAssembly.exe /md /il /clock

在成功完成上述要求之後,Peverify.exe 會顯示下列訊息。

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

下列命令會對 myAssembly.exe 組件中實作的方法,執行中繼資料驗證檢查和 MSIL 型別安全驗證檢查。不過,當 Peverify.exe 到達最大錯誤計數 100 時便會停止。工具也會忽略指定的錯誤碼。

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

下列命令會產生和上述前一個範例一樣的結果,但會指定要在回應檔 ignoreErrors.rsp 中忽略的錯誤碼。

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

回應檔可包含錯誤碼的逗號分隔清單。

0x12345678, 0xABCD1234

或者,以每行一個錯誤碼的方式格式化回應檔。

0x12345678
0xABCD1234

請參閱

概念

撰寫可驗證的型別安全程式碼

型別安全和安全性

參考

.NET Framework 工具

SDK 命令提示字元