编译带有错误的.net应用程序

时间:2012-10-28 15:23:32

标签: .net vb.net compilation compiler-errors decompiling

我使用.NET Reflector反编译了一个应用程序,并希望进行一些更改并再次编译...但是当我尝试编译它时,我得到了一堆错误,如:

Error   14  'RaiseEvent' definition missing for event 'AsyncReturn'.
Error   55  End of statement expected.
Error   58  Type 'WksStatus' is not defined.
Error   88  Character is not valid.
Error   102 Maximum number of errors has been exceeded.

有没有办法:

  1. 反编译它以便没有错误,或
  2. 即使有错误也要编译它。
  3. 非常感谢您的帮助!并随意提问。

1 个答案:

答案 0 :(得分:4)

反编译代码并不是一门精确的科学。反编译器使用一些算法对MSIL代码进行反向工程,并将其转换为您可以理解的.net语言 此外,您使用.net语言编写了大量代码,这些代码经过预处理或编译成不同的代码。这些有时被称为“语法糖”(例如:'收益率','锁定',扩展方法,使用等)

那里有很多反编译器,它们并不完美! 你甚至可以尝试在两个不同的反编译器中打开相同的dll /可执行文件,通常你会看到对同一个MSIL的不同解释。

如果您正在查看的代码是开源的,那么您应该尝试抓住真正的代码!
如果不是,那么你不应该黑客攻击,而是报告某种错误!
如果它不属于上述情况,那么......你只需要自己做一些小修复,然后重新编译代码,但我向你保证,一些反编译器可能会导致代码错误,而且不会完全与之前一样,因为他们的工作方式。