Peverify.exe (PEVerify 工具)

PEVerify 工具可協助產生 Microsoft 中繼語言 (MSIL) 的開發人員(例如編譯程式寫入器和腳本引擎開發人員),以判斷其 MSIL 程式代碼和相關聯的元數據是否符合類型安全性需求。 只有在避免使用某些語言建構時,某些編譯器才會產生可驗證的類型安全程式碼。 如果您使用這類編譯程式,您可能會想要確認您尚未危害程式代碼的類型安全性。 您可以在檔案上執行PEVerify工具,以檢查 MSIL 和元數據。

此工具會自動與 Visual Studio 一起安裝。 若要執行此工具,請使用 Visual Studio 開發人員命令提示字元或 Visual Studio Developer PowerShell

語法

peverify filename [options]

參數

Argument 描述
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 忽略指定的回應檔中列出的錯誤碼。
/il 針對 filename 所指定組件中實作的方法,執行 MSIL 型別安全驗證檢查。 除非您指定 /quiet 選項,否則此工具會針對每個找到的問題傳回詳細描述。
/md filename 所指定的組件上,執行中繼資料驗證檢查。 此選項會逐步解說檔案內的完整元數據結構,並報告所有遇到的驗證問題。
/nologo 不顯示產品版本和著作權資訊。
/nosymbols 在 .NET Framework 2.0 版中,隱藏行號以提供回溯兼容性。
/quiet 指定無訊息模式,隱藏驗證問題報告的輸出。 Peverify.exe 仍會報告檔案是否為類型安全,但不會報告阻礙類型安全驗證之問題的資訊。
/transparent 只驗證透明方法。
/unique 忽略重複的錯誤碼。
/verbose 在 .NET Framework 2.0 版中,在 MSIL 驗證訊息中顯示其他資訊。
/? 顯示工具的命令語法和選項。

備註

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

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

Peverify.exe 會依據資料流分析加上有效的中繼資料上數百項規則的清單,執行全面性的 MSIL 驗證檢查。 如需 Peverify.exe 所執行檢查的詳細資訊,請參閱 Windows SDK 的 [Tools Developers Guide] 資料夾中的「中繼資料驗證規格」與「MSIL 指令集規格」。

.NET Framework 2.0 版或更新版本支援使用下列 MSIL 指示指定的可byref驗證傳回:dupldsfldaldflda、、 ldelemacallunbox

範例

下列命令會對 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

另請參閱