2016-06-01 15 views
0

this answerのコードを使用してリフレクション付きの型を作成しています。そして、私はこのクラスに関数を追加したい(おそらくILGeneratorを使って)。 は、アセンブリおよび反射板とのオープンにコンパイルILビューに切り替えて、あなたはC#のコードフラグメントのReflection.Emitコードの取得

をcopypastableコードが表示されます。そして、 this answerのコメントセクションでは、 Sergey MirvodaはILGeneratorは、コマンドは、単にこれらの手順に従うことによって得られること発するとコメント

私は失われたコードを得ることができるように私は逆コンパイルしたくありません。したがって私は逆コンパイラを探しているわけではありません。私は現在持っているサンプルコードのIL Emitコードを取得しようとしています。 Decompilingはちょうどトリックを行うかもしれません。しかし、他の解決策があり、第三者のアプリを必要としないことが期待されます。

私はVS Ultimate 2013を使用しています。これをVSで行う方法はありますか?または、サードパーティのアプリケーションを使用する必要がありますか?

+0

*無料*のためにTelerik JustDecompileを使用できます。 – christiandev

+0

またはILSpy(ソースコード –

+0

)[A。net disassembler/decompiler](http://stackoverflow.com/questions/578883/a-net-disassembler-decompiler)の可能な複製 –

答えて

0

あなたは、たとえば、ILのオペコードを取得したい場合:

ldarg.0 
conv.i8 
dup 
mul 
ret 

その後、あなたは(WindowsのSDKに含まれる)ILDASM、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では、2番目のスニペットに表示する内容を行うことができます。 – user9993

+0

@ user9993はい、わかっています。私の答えは、既存のコードを 'ILGenerator'で使用できるコードに逆コンパイルする方法です。 – svick

関連する問題