Si conecto NGen, ¿es normal que ildasm aún lo desarme?¿Podemos desmontar (utilizando ILDasm) un conjunto NGen-ed?
Ok. Escribí una biblioteca de clase HelloWorld y el dll resultante se llama NGenILDasmTest.dll. -> selectiva para el FW .Net 4.
el símbolo del sistema Vs 2010, lo hice
gacutil -i NGenILDasmTest.dll
pude ver el montaje instalado en la GAC. Y ejecuté ildasm para poder ver el IL. Hasta ahora todo bien.
Luego ejecutar
ngen NGenILDasmTest.dll
(que no especifica ninguna opción para NGEN). Y esta asamblea se compiló con éxito. Localicé con un nombre NGenILDasmTest.ni.dll bajo la carpeta
C:\Windows\Assembly\NativeImages_v4.0.30319_32\NGenILDasmTest\81d49dd4c7df22fb3df530402b58ffc9
Ahora, cuando corro ildasm, como a continuación
ildasm "C:\Windows\Assembly\NativeImages_v4.0.30319_32\NGenILDasmTest\81d49dd4c7df22fb3df530402b58ffc9\NGenILDasmTest.ni.dll"
pude ver el contenido de la asamblea Ngen-ed. ¿Esto es normal?.
Técnicamente hablando, Ngen genera intrusiones de CPU nativas para el IL (y aparentemente lo ubica en C: \ windows \ Assembly \ NAtiveImages_V4. ##### _ 32 - en mi caso). Si ese es el caso, ¿cómo puedo ver el ensamblaje NGen-ed como IL usando ILDasm?
Por favor, ayúdame a entender ese "pequeño detalle" que me falta aquí.
+1, esto parece correcto. –
@vcsjones ¡Estoy de acuerdo! Ese enlace en tu respuesta lo explica todo. Verdadera ingeniería inversa. Mientras tanto, traté de construir por NGenILDasmTest.dll en modo/release y/debug mode por separado. Eso tampoco parece hacer ninguna diferencia. Una cosa más que se observa es que el ensamblaje original NGenILDasmTest.dll tiene un tamaño de 5 KB ya que Explorer lo muestra, y el ensamblado de ensamblaje Ngen-ed NGenILDasmTest.ni.dll es de 10 KB. Sin pensarlo dos veces, eso me hace creer la afirmación de que "un ensamblaje NGEN'ed es el código nativo IL plus". – gmaran23