我正在使用Reflection.Emit
等动态生成程序集。
对于单元测试,我想 PEVerify 我的 IL。
我可以从命令行执行此操作,但我宁愿在代码中执行此操作。
有没有比调用 PEVerify.exe 更方便的方法?理想情况下,我想直接将动态程序集交给它,而不必先将该程序集保存到磁盘。
理想情况下,我正在寻找类似 (psuedocode:
Assert.IsFalse(new PEVerifier(myAssembly).Verify().Errors.Any());
我正在使用Reflection.Emit
等动态生成程序集。
对于单元测试,我想 PEVerify 我的 IL。
我可以从命令行执行此操作,但我宁愿在代码中执行此操作。
有没有比调用 PEVerify.exe 更方便的方法?理想情况下,我想直接将动态程序集交给它,而不必先将该程序集保存到磁盘。
理想情况下,我正在寻找类似 (psuedocode:
Assert.IsFalse(new PEVerifier(myAssembly).Verify().Errors.Any());
正如“重复”问题的答案所暗示的那样,您可以弄清楚如何挂钩到 PEVerify.exe 使用的本机 DLL(我猜这会导致问题,因为它没有记录并且可能会发生变化)。
另一种选择是使用AssemblyBuilder
该类将您正在创建的动态程序集写入磁盘的临时位置,然后通过System.Diagnostics.Process
该类调用 PEVerify.exe(与此PEVerifier类示例非常相似)。