"Illegal use of type 'void' in signature"是什么意思?



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

系统。InvalidProgramException:公共语言运行库检测到一个无效程序。

作为错误消息,这只是与UR COMPILER SUXX0RZ LOLOLOL!!!完全相同的信息,在MSDN上查找它说同样的事情:编译器有问题。

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

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

不幸的是,除此之外,它什么也没说,比如哪个签名有非法的void。你知道的,就是那种对追踪报告的错误很有用的东西…

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

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

相关内容

最新更新