2014-09-29 212 views
-5

我使用ILSpy對C#程序集進行了反編譯。在VC中作爲項目開放。
一小部分代碼會拋出我不知道如何解決的錯誤。下面的代碼:

public static class CoroutineUtils 
{ 
    [DebuggerHidden] 
    public static IEnumerator WaitForRealSeconds(float time) 
    { 
     CoroutineUtils.<WaitForRealSeconds>c__Iterator2F <WaitForRealSeconds>c__Iterator2F = new CoroutineUtils.<WaitForRealSeconds>c__Iterator2F(); 
     <WaitForRealSeconds>c__Iterator2F.time = time; 
     <WaitForRealSeconds>c__Iterator2F.<$>time = time; 
     return <WaitForRealSeconds>c__Iterator2F; 
    } 
} 

而這裏的錯誤:意外字符 '$'(在這種情況下,第8行)。
如果我打開其中出現錯誤的cs文件,編譯器開始扔了十幾錯誤,如標識預期第6行(右後「CoroutineUtils。」)
不知道該怎麼做。

回答

4

你不能複製/粘貼反編譯的代碼,並確保它能正常工作。編譯器可以使用在C#代碼中無效但在IL中有效的標識符。它主要發生在編譯器生成的代碼 - 自動屬性,匿名類型,迭代器和轉換爲狀態機等等。這就是這種情況。

確實很難說代碼應該做什麼,所以很難說如何解決這個問題。

+0

問題中的代碼看起來像一個'yield return'迭代器。 – Dai 2014-09-29 06:52:28

+0

謝謝。這是否意味着ILSpy無法完全反編譯代碼,但其他軟件可能會成功?或者是這樣嗎? – Bester 2014-09-29 06:52:56

+0

我不知道。你可以試試。 – MarcinJuraszek 2014-09-29 06:54:14