2012-10-28 179 views
2

我使用.NET Reflector對應用程序進行了反編譯,並且想要進行一些更改並重新編譯它......但是,當我嘗試編譯它時,出現一堆錯誤:編譯.net應用程序時出錯

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. 編譯它,即使有錯誤。

非常感謝您的幫助!並隨時提問。

+0

3.手動修復反編譯後的錯誤。 –

+0

看到的錯誤之一是:超過錯誤的最大數量......我真的覺得這太難了。 –

回答

4

反編譯代碼並不是一門精確的科學。反編譯器使用一些算法對MSIL代碼進行反向工程,並將其轉換爲可以理解的.net語言。
此外,還有很多用.net語言編寫的代碼,它們被預處理或編譯成不同的代碼段。這些有時被稱爲'語法糖'(例子包括:'收益率','鎖',擴展方法,使用等)。不完美!
你甚至可以嘗試在兩個不同的反編譯器中打開相同的DLL /可執行文件,並且經常會看到對同一MSIL的不同解釋。

如果您正在查看的代碼是開源的,您應該嘗試獲得真實代碼!
如果不是,那麼你不應該黑客它,但報告某種錯誤!
如果沒有上述內容,那麼......你只需要自己完成所需的小修復,然後重新編譯代碼,但我向你保證,一些反編譯器可能會導致代碼中的錯誤,並贏得因爲他們工作的方式,他們像以前一樣工作