2016-06-01 2 views
0

this answer의 코드를 사용하여 리플렉션 형식을 만듭니다. 그리고이 클래스에 함수를 추가하고 싶습니다 (아마도 ILGenerator를 사용합니다). 그리고 this answer의 코멘트 섹션에서 Sergey Mirvoda는 ILGenerator이 명령은 간단하게 다음과 같이 얻을 수 있습니다 방출 논평 : 은, 반사경 조립 및 공개로 컴파일 IL보기로 전환하면C에서 코드 조각에 Reflection.Emit 코드 가져 오기

을 copypastable 코드를 볼 수 있습니다

디코드를 원하지 않아 잃어버린 코드를 얻을 수 있습니다. 따라서 나는 디 컴파일러를 찾고 있지 않다. 현재 가지고있는 샘플 코드에 대해 IL Emit 코드를 가져 오려고합니다. 디 컴파일은 트릭을 수행 할 수 있습니다. 그러나 다른 솔루션이있을 수 있으며 제 3 자 앱을 요구하지 않기를 바랍니다.

VS Ultimate 2013을 사용하고 있습니다. VS에서이 작업을 수행 할 수있는 방법이 있습니까? 아니면 타사 앱을 사용해야합니까?

+0

* 무료 *로 Telerik JustDecompile을 사용할 수 있습니다. – christiandev

+0

또는 ILSpy, 소스 코드와 함께 제공 –

+0

가능한 복제본 [.net disassembler/decompiler] (http://stackoverflow.com/questions/578883/a-net-disassembler-decompiler) –

답변

0

당신은 예를 들어, IL의 옵 코드를 얻고 싶다면 :

ldarg.0 
conv.i8 
dup 
mul 
ret 

는 그런 다음 ILDASM (윈도우 SDK에 포함)를 포함하여 몇 가지 옵션을 가지고, dotPeek의 IL 뷰어 또는 LINQPad의 IL 탭 (모두 무료).

자동 Reflection.Emit를 코드를 생성하는 도구, 예컨대 :

il.Emit(OpCodes.Ldarg_0); 
il.Emit(OpCodes.Conv_I8); 
il.Emit(OpCodes.Dup); 
il.Emit(OpCodes.Mul); 
il.Emit(OpCodes.Ret); 

을 원한다면 내가 아는 유일한 사람이 ReflectionEmitLanguage 부가 기능은 반사경에 (지급의 원인이되는)입니다.

+0

https://msdn.microsoft .com/en-us/library/system.reflection.emit.ilgenerator (v = vs.110) .aspx ILGenerator를 사용하면 두 번째 발췌 문장에 표시 할 내용을 수행 할 수 있습니다. – user9993

+0

@ user9993 예, 알고 있습니다. 내 대답은 'ILGenerator'와 함께 사용할 수있는 코드로 기존 코드를 디 컴파일하는 방법입니다. – svick