Peverify.exe (PEVerify ツール)Peverify.exe (PEVerify Tool)

PEVerify ツールは、Microsoft Intermediate Language (MSIL) を生成する開発者 (コンパイラの作成者、スクリプト エンジンの開発者など) が、生成する MSIL コードと関連メタデータがタイプ セーフ要件を満たしているかどうかを確認する場合に役立ちます。The PEVerify tool helps developers who generate Microsoft intermediate language (MSIL) (such as compiler writers, script engine developers, and so on) to determine whether their MSIL code and associated metadata meet type safety requirements. 一部のコンパイラでは、特定の言語構成を使用しなかった場合にだけ、検査可能でタイプ セーフなコードが生成されます。Some compilers generate verifiably type-safe code only if you avoid using certain language constructs. このようなコンパイラを使用している場合、生成したコードがタイプ セーフかどうかを確認する必要があると思う開発者もいるはずです。If, as a developer, you are using such a compiler, you may want to verify that you have not compromised the type safety of your code. そのような場合は、ファイルに対して PEVerify ツールを実行し、MSIL とメタデータを検査できます。In this situation, you can run the PEVerify tool on your files to check the MSIL and metadata.

このツールは、Visual Studio と共に自動的にインストールされます。This tool is automatically installed with Visual Studio. このツールを実行するには、開発者コマンド プロンプト (または、Windows 7 の Visual Studio コマンド プロンプト) を使用します。To run the tool, use the Developer Command Prompt (or the Visual Studio Command Prompt in Windows 7). 詳細については、「Visual Studio 用開発者コマンド プロンプト」を参照してください。For more information, see Command Prompts.

コマンド プロンプトに次のように入力します。At the command prompt, type the following:

構文Syntax

peverify filename [options]  

パラメーターParameters

引数Argument 説明Description
ファイル名filename MSIL とメタデータを検査する対象のポータブル実行可能 (PE) ファイル。The portable executable (PE) file for which to check the MSIL and metadata.
オプションOption 説明Description
/break= maxErrorCount/break= maxErrorCount maxErrorCount エラーが発生した後で検査を中止します。Aborts verification after maxErrorCount errors.

このパラメーターは、.NET Framework Version 2.0 以降ではサポートされません。This parameter is not supported in .NET Framework version 2.0 or later.
/clock/clock 次の検査時間をミリ秒単位で計測して報告します。Measures and reports the following verification times in milliseconds:

MD Val. cycleMD Val. cycle
メタデータ検証サイクルMetadata validation cycle

MD Val. pureMD Val. pure
メタデータ検証のみMetadata validation pure

IL Ver. cycleIL Ver. cycle
Microsoft Intermediate Language (MSIL) 検証サイクルMicrosoft intermediate language (MSIL) verification cycle

IL Ver pureIL Ver pure
MSIL 検証のみMSIL verification pure

MD Val. cycle 時間および IL Ver. cycle 時間には、必要なスタートアップ手順およびシャットダウン手順を実行するために必要な時間が含まれます。The MD Val. cycle and IL Ver. cycle times include the time required to perform necessary startup and shutdown procedures. MD Val. pure 時間および IL Ver pure 時間は、検査または検証だけを行うために要する時間を反映します。The MD Val. pure and IL Ver pure times reflect the time required to perform the validation or verification only.
/help/help このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool.
/hresult/hresult エラーコードを 16 進形式で表示します。Displays error codes in hexadecimal format.
/ignore= hex.code [, hex.code]/ignore= hex.code [, hex.code] 指定したエラー コードを無視します。Ignores the specified error codes.
/ignore=@ responseFile/ignore=@ responseFile 指定した応答ファイル内に一覧表示されているエラー コードを無視します。Ignores the error codes listed in the specified response file.
/il/il filename で指定したアセンブリに実装されているメソッドに対して、MSIL がタイプ セーフかどうかを検査します。Performs MSIL type safety verification checks for methods implemented in the assembly specified by filename. /quiet オプションを指定した場合を除き、検出された問題ごとに詳細な説明が返されます。The tool returns detailed descriptions for each problem found unless you specify the /quiet option.
/md/md filename で指定したアセンブリに対して、メタデータを検証します。Performs metadata validation checks on the assembly specified by filename. この場合、ファイル内のすべてのメタデータ構造が検証され、検出された問題がすべて報告されます。This walks the full metadata structure within the file and reports all validation problems encountered.
/nologo/nologo 製品バージョンと著作権情報を表示しません。Suppresses the display of product version and copyright information.
/nosymbols/nosymbols .NET Framework Version 2.0 で、後方互換性のために行番号を表示しません。In the .NET Framework version 2.0, suppresses line numbers for backward compatibility.
/quiet/quiet クワイエット モードを指定します。このモードでは、検査により検出された問題の報告が簡略化されます。Specifies quiet mode; suppresses output of the verification problem reports. ファイルがタイプ セーフかどうかは報告されますが、タイプ セーフでない場合に、その問題に関する情報は報告されません。Peverify.exe still reports whether the file is type safe, but does not report information on problems preventing type safety verification.
/transparent 透過的なメソッドのみを検証します。Verify only the transparent methods.
/unique/unique 繰り返し発生するエラー コードを無視します。Ignores repeating error codes.
/verbose/verbose .NET Framework Version 2.0 で、MSIL 検証メッセージに追加情報を表示します。In the .NET Framework version 2.0, displays additional information in MSIL verification messages.
/?/? このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool.

コメントRemarks

共通言語ランタイムは、セキュリティ機構や分離機構の実施を簡単にするために、アプリケーション コードがタイプ セーフに実行されることに依存しています。The common language runtime relies on the type-safe execution of application code to help enforce security and isolation mechanisms. 通常、検査可能でタイプ セーフなコード以外のコードは実行できません。しかし、信頼できるが検査を実行できないコードを実行可能にするセキュリティ ポリシーを設定することはできます。Normally, code that is not verifiably type safe cannot run, although you can set security policy to allow the execution of trusted but unverifiable code.

/md/il のいずれのオプションも指定しない場合は、両方の種類の検査が実行されます。If neither the /md nor /il options are specified, Peverify.exe performs both types of checks. まず、/md オプションによる検査が実行されます。Peverify.exe performs /md checks first. エラーが検出されない場合は、/il オプションによる検査が実行されます。If there are no errors, /il checks are made. /md/il の両方のオプションを指定した場合は、メタデータの検査でエラーが検出された場合でも、/il オプションによる検査が実行されます。If you specify both /md and /il, /il checks are made even if there are errors in the metadata. つまり、メタデータの検査でエラーが検出されないときは、peverify filenamepeverify filename /md /il のいずれを指定しても同じ検査が実行されます。Thus, if there are no metadata errors, peverify filename is equivalent to peverify filename /md /il.

Peverify.exe は、データ フローの分析と、メタデータの有効性に関する多数の規則のリストに基づいて、MSIL に対する包括的な検査を実行します。Peverify.exe performs comprehensive MSIL verification checks based on dataflow analysis plus a list of several hundred rules on valid metadata. Peverify.exe によって実行される検査の詳細については、Windows Software Development Kit (SDK)Windows Software Development Kit (SDK) の Tools Developers Guide フォルダー内にある Metadata Validation の仕様および MSIL Instruction Set の仕様を参照してください。For detailed information on the checks Peverify.exe performs, see the "Metadata Validation Specification" and the "MSIL Instruction Set Specification" in the Tools Developers Guide folder in the Windows Software Development Kit (SDK)Windows Software Development Kit (SDK).

.NET Framework Version 2.0 以降では、byrefdupldsfldaldfldaldelema、および call の各 MSIL 命令を使用して指定する検証可能な unbox 戻り値をサポートします。Note that the .NET Framework version 2.0 or later supports verifiable byref returns specified using the following MSIL instructions: dup, ldsflda, ldflda, ldelema, call and unbox.

使用例Examples

アセンブリ myAssembly.exe に実装されているメソッドに対して、メタデータの有効性および MSIL がタイプ セーフかどうかについて検査するコマンドを次に示します。The following command performs metadata validation checks and MSIL type safety verification checks for methods implemented in the assembly myAssembly.exe.

peverify myAssembly.exe /md /il  

上記の要求が正常に終了した場合は、次のメッセージが表示されます。Upon successful completion of the above request, Peverify.exe displays the following message.

All classes and methods in myAssembly.exe Verified  

アセンブリ myAssembly.exe に実装されているメソッドに対して、メタデータの有効性および MSIL がタイプ セーフかどうかについて検査するコマンドを次に示します。The following command performs metadata validation checks and MSIL type safety verification checks for methods implemented in the assembly myAssembly.exe. このツールは、これらの検査に要する時間を表示します。The tool displays the time required to perform these checks.

peverify myAssembly.exe /md /il /clock  

上記の要求が正常に終了した場合は、次のメッセージが表示されます。Upon successful completion of the above request, Peverify.exe displays the following message.

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 がタイプ セーフかどうかについて検査するコマンドを次に示します。The following command performs metadata validation checks and MSIL type safety verification checks for methods implemented in the assembly myAssembly.exe. しかし、Peverify.exe は、最大エラー カウントである 100 に達すると、停止します。Peverify.exe stops, however, when it reaches the maximum error count of 100. このツールは、指定されたエラー コードも無視します。The tool also ignores the specified error codes.

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

上記の例と結果は同じですが、無視するエラー コードを応答ファイル ignoreErrors.rsp に指定するコマンドを次に示します。The following command produces the same result as the above previous example, but specifies the error codes to ignore in the response file ignoreErrors.rsp.

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

この応答ファイルには、エラー コードの一覧をコンマで区切って指定できます。The response file can contain a comma-separated list of error codes.

0x12345678, 0xABCD1234  

また、エラー コードを 1 行に 1 つという形式で指定することもできます。Alternatively, the response file can be formatted with one error code per line.

0x12345678  
0xABCD1234  

参照See Also

ツールTools
NIB: 検証可能なタイプ セーフ コードの作成NIB: Writing Verifiably Type-Safe Code
タイプ セーフとセキュリティType Safety and Security
Visual Studio 用開発者コマンド プロンプトCommand Prompts