Peverify.exe (средство PEVerify)

Инструмент PEVerify помогает разработчикам, создающим код на промежуточном языке Microsoft (MSIL) — авторам компиляторов, обработчиков скриптов и т. д. — определить, насколько их код на языке MSIL и связанные с ним метаданные отвечают требованиям строгой типизации. Некоторые компиляторы создают проверяемый типобезопасный код только в том случае, если разработчик не применяет определенные конструкции языка. При работе с таким компилятором разработчику иногда требуется проверить, нет ли в написанном им коде отступлений от принципа строгой типизации. В этом случае для проверки MSIL и метаданных в файлах можно использовать инструмент PEVerify.

Это средство устанавливается автоматически с Visual Studio и пакетом SDK Windows. Чтобы запустить инструмент, мы рекомендуем использовать командную строку Visual Studio или командную строку пакета Windows SDK (командную оболочку). Эти служебные программы позволяют легко работать с инструментом, не переходя к папке установки. Дополнительные сведения см. в разделе Командная строка Visual Studio и пакета Windows SDK.

  • Если на компьютере установлена среда Visual Studio: на панели задач последовательно щелкните Start, All Programs, Visual Studio, Visual Studio Tools и Visual Studio Command Prompt.

    – или –

    Если на компьютере установлен пакет Windows SDK: на панели задач щелкните Start, выберите All Programs и откройте папку с пакетом Windows SDK, затем щелкните Command Prompt (или CMD Shell).

  • В командной строке введите следующее:

peverify filename [options]

Параметры

Аргумент

Описание

filename

Переносимый исполняемый файл (PE-файл), который должен быть проверен на корректность MSIL и метаданных.

Параметр

Описание

/break=макс_кол-во_ошибок

Прекращает проверку после обнаружения числа ошибок, равного значению аргумента максимальное_количество_ошибок.

Этот параметр не поддерживается в версии .NET Framework 2.0 и более поздних.

/clock

Измеряет и выводит значения времени следующих проверок (в миллисекундах):

MD Val. cycle

Цикл проверки метаданных

MD Val. pure

Чистое время проверки метаданных

IL Ver. cycle

Цикл проверки промежуточного языка MSIL

IL Ver pure

Чистое время проверки промежуточного языка MSIL

Значения MD Val. cycle и IL Ver. cycle включают время, затраченное на выполнение необходимых процедур запуска и завершения проверки. Периоды времени MD Val. pure и IL Ver pure отражают время, требуемое для выполнения только проверки.

/help

Отображает синтаксис команд и параметры программы.

/hresult

Выводит коды ошибок в шестнадцатеричном формате.

/ignore=шестнадцатеричный_код [, шестнадцатеричный_код]

Игнорирует ошибки с заданными кодами.

/ignore = @файл_ответов

Не обрабатывает ошибки с кодами, список которых содержится в указанном вспомогательном файле.

/il

Производит проверку строгой типизации MSIL для методов, реализованных в сборке, указанной в параметре имя_файла. Если отсутствует параметр /quiet, средство выводит подробное описание всех обнаруженных проблем.

/md

Производит проверку метаданных, которые содержатся в сборке, указанной в параметре имя_файла. Средство проверяет всю структуру метаданных, содержащихся в файле, и выводит описание всех обнаруженных проблем.

/nologo

Отключает вывод сведений о версии продукта и авторских правах.

/nosymbols

В платформе .NET Framework версии 2.0 отключает номера строк для обеспечения обратной совместимости.

/quiet

Устанавливает тихий режим. Отключает вывод сообщений об обнаруженных проблемах. Средство Peverify.exe в любом случае уведомляет, соблюдена ли безопасность типов в файле, однако не дает сведений о встретившихся в ходе проверки проблемах.

/transparent

Проверка только прозрачных методов.

/unique

Не обрабатывает ошибки с повторяющимися кодами.

/verbose

В платформе .NET Framework версии 2.0 выводит дополнительные сообщения в проверочных сообщениях MSIL.

/?

Отображает синтаксис команд и параметры программы.

Заметки

В среде CLR реализация механизмов безопасности и изоляции основана на типобезопасности выполнения кода приложений. Обычно код, для которого невозможно подтвердить типобезопасность, не выполняется, хотя можно настроить политику безопасности таким образом, чтобы допускалось исполнение доверенного, но не подтвержденного кода.

Если параметры /md и /il не заданы Peverify.exe выполняет проверку как MSIL, так и метаданных. Сначала Peverify.exe проверяет метаданные (параметр**/md**). Если ошибок нет, выполняется проверка MSIL (параметр /il). Если указаны оба параметра /md и /il, проверка по параметру /il производится даже при наличии ошибок в метаданных. Поэтому при отсутствии ошибок в метаданных команда peverify имя_файла эквивалентна команде peverify имя_файла /md /il.

Средство Peverify.exe осуществляет полную проверку MSIL на основе анализа потоков данных и проверяет правильность метаданных на основе списка из нескольких сотен правил. Дополнительные сведения о проверках, производимых Peverify.exe, см. в разделах, посвященных спецификации проверки метаданных и спецификации набора инструкций MSIL в папке "Tools Developers Guide" в Пакет средств разработки программного обеспечения (SDK) для Windows.

Обратите внимание, что в платформе .NET Framework версии 2.0 или более поздней предоставляется поддержка возвращаемых значений byref, заданных с использованием следующих инструкций MSIL: dup, ldsflda, ldflda, ldelema, call и unbox.

Примеры

Приведенная ниже команда производит проверку метаданных и строгой типизации MSIL для методов, реализованных в сборке myAssembly.exe.

peverify myAssembly.exe /md /il

После полного завершения обработки этого запроса Peverify.exe выводит на экран следующее сообщение.

All classes and methods in myAssembly.exe Verified

Приведенная ниже команда производит проверку метаданных и строгой типизации MSIL для методов, реализованных в сборке myAssembly.exe. Средство выводит на экран данные о затраченном на проверку времени.

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

Приведенная ниже команда производит проверку метаданных и строгой типизации MSIL для методов, реализованных в сборке myAssembly.exe. Однако 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

См. также

Ссылки

Командная строка Visual Studio и пакета Windows SDK

Основные понятия

Написание проверяемого строго типизированного кода

Строгая типизация и безопасность

Другие ресурсы

Инструменты .NET Framework

Журнал изменений

Дата

Журнал

Причина

Апрель 2011

Добавлены сведения об использовании командных строк Visual Studio и Windows SDK.

Улучшение информации.