2014-09-29 3 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에서는 유효한 식별자를 사용할 수 있습니다. 주로 컴파일러에서 생성 한 코드 (자동 속성, 익명 형식, 반복자 및 async/await)가 상태 시스템 등으로 변환되는 경우에 발생합니다.

코드가하는 일을 말하는 것이 정말 어렵 기 때문에이를 고치는 방법을 말하는 것이 정말 어렵습니다.

+0

질문의 코드는 'yield return'iterator처럼 보입니다. – Dai

+0

감사합니다. ILSpy가 코드를 완전히 디 컴파일 할 수 없지만 다른 소프트웨어가 성공할 수 있다는 의미입니까? 아니면 이것입니까? – Bester

+0

잘 모르겠습니다. 너도해볼 수있어. – MarcinJuraszek