Вместо использования PEVerify вы можете использовать декомпилятор ILSpy для внутрипроцессного решения, как описано здесь: http://www.codeproject.com/Tips/659692/Automated-MSIL-PE-verification-using-ILSpy
Краткое содержание статьи:
- Соберите соответствующие библиотеки DLL для ссылки из вашего тестового проекта или средства проверки IL во время выполнения в этом случае
- Выполните итерации по методам проверки с использованием Mono.Cecil
- Для каждого метода добавьтеэто к AstBuilder, определенному в ICSharpCode.Decompiler, который выполняет проверку.Например,
var context = new DecompilerContext(method.Module) { CurrentType = method.DeclaringType };
var astBuilder = new AstBuilder(context);
astBuilder.AddMethod(method);
По производительности я не проверял, какой метод быстрее.Хотя этот метод работает в процессе, он может быть медленнее, поскольку абстрактное синтаксическое дерево создается при проверке IL (для проверки этой теории потребуется настроить тест производительности).
Я нашел декомпилятор ILSpyчтобы быть более надежным, чем PEVerify, как указано в вышеприведенной статье, в одном случае PEVerify объявил одну сборку допустимой, в то время как ILSpy правильно дал красивую трассировку стека, указывающую на мою ошибку при генерации.