2

我有一个正在生成程序集的编译器。当我加载程序集并尝试在其类在该程序集中的对象上运行方法时,它会引发异常:

System.InvalidProgramException:公共语言运行时检测到无效程序。

随着错误消息的出现,这与UR COMPILER SUXX0RZ LOLOLOL!!! 在 MSDN 上查找它所提供的信息完全相同:编译器有问题。

所以我尝试在生成的程序集上运行PEVerify并得到一个更有用的消息:

[MD]:错误:在签名中非法使用类型“void”。[令牌:0x11000002]

不幸的是,它没有说除此之外的任何内容,例如什么签名具有非法 void。你知道,那种对追踪报告的错误很有用的东西......

在 ILDASM 中打开它,我没有看到任何明显错误的空虚,那么下一步是什么?我从哪里去找出我的编译器做错了什么?

4

1 回答 1

3

您可以使用/TOKENSIL DASM 的参数。这使得 IL DASM 将令牌的值显示为注释。给定 PEVerify 错误消息中的令牌值,您可以轻松定位程序集的问题元素。

于 2015-09-20T20:52:21.750 回答