PEVerify 工具 (Peverify.exe)
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 和 IL Ver. cycle 時間包括了執行必要啟動和關閉程序所需的時間。MD Val. pure 和 IL 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 會相當於 peverify filename /md /il。
Peverify.exe 會依據資料流分析加上有效中繼資料上數百個規則的清單,執行綜合性的 MSIL 驗證檢查。如需 Peverify.exe 所執行檢查的詳細資訊,請參閱 .NET Framework 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