2012-02-08 15 views
5

Tengo un archivo .il que puedo compilar sin ningún problema. Puedo nombrarlo fuerte y así sin ningún problema. Pero no puedo establecer la versión del archivo a través del atributo como lo esperaría. ¿Cómo puedo configurar FileVersion para un ensamblado cuando uso ilasm?ILASM no establece FileVersion

Si hago un viaje de ida y vuelta siempre obtengo un archivo .res que solo contiene datos binarios que no se pueden leer. ¿Qué hay dentro de este archivo res y puedo editarlo?

El código no funciona

.assembly myAssembly 
{ 
    .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = { string('1.2.3.4') } 

Respuesta

9

El problema puede ser resuelto mediante el archivo .res. No es suficiente hacer un viaje de ida y vuelta con ildasm y ilasm. El archivo IL no hace referencia al archivo .res. Tuve que agregarlo a la llamada ilasm manualmente. Los datos en el archivo res parecían contener las informaciones que están escritas en el encabezado PE, lo cual está bien para mí.

La línea de comandos final necesario era

ilasm test.il /dll /res:test.res 

Todavía no saben qué es exactamente dentro del archivo res pero puedo exhange con la información de metadatos de cualquier otra assemlby que crear manualmente y luego descompilar para reemplazar los metadatos del ensamblaje original según lo necesite.

Parece que no hay mucha gente haciendo tales cosas.

+1

Cada programador C/C++ hace esto. La forma más fácil de crear el archivo .res es con un proyecto ficticio de C++. Edite el archivo .rc, a mano o mediante el editor de recursos en C++ IDE. La herramienta rc.exe SDK lo traduce en .res –

+0

Gracias, no he pensado que VS realmente pueda editar el recurso Versión en el editor binario. Es bueno saber que ilasm no usa algún formato binario arcano. –

Cuestiones relacionadas