Pregunta

Estoy intentando crear una aplicación puede modificar las propiedades de la IL crear un ejecutable ligeramente diferente. Por ejemplo el cliente A se ejecuta la aplicación y una etiqueta en la etiqueta WinForm Lee "Cliente A:". Cliente B se ejecuta la aplicación y etiqueta dice "Cliente B". Fácil Sé el uso de los archivos de configuración o archivos de recursos pero eso no es una opción para este proyecto. Las necesidades del programa principal para ser capaz de generar el archivo .exe dinámicamente basándose en algunos campos de formulario introducidos por el usuario.

Mi solución fue crear un archivo ejecutable independiente que contenía todos los elementos que necesitaba para hacer dinámico. Luego utiliza ildasm para generar la IL y pensé que podría utilizar esta IL etiquetas y sustitutos para los elementos que quería hacer dinámico. Entonces podría sustituir esas etiquetas en tiempo de ejecución cuando el usuario llena el formulario utilizando expresiones regulares, etc. El problema es, si la i re guardar el archivo generado por IL ILDASM como un exe y tratar de ejecutarlo. Acabo de lanzamientos de la consola y no hace nada.

I Am ir sobre esto por el camino equivocado? Yo no quiero ahondar en la reflexión como la dinámica .exe es una muy simple y pensé ingeniería inversa con IL ildasm sería la forma más rápida.

pensamientos y punteros son muy apreciados. Tony

¿Fue útil?

Solución

Es el ejecutable generado in situ? ¿O se genera el ejecutable para un cliente y luego envía el resultado?

Si usted es el que genera el ejecutable, se puede poner los datos específicos de cliente / código en un archivo DLL independiente y incrustarla en su ejecutable como un recurso, y la carga cuando se produce el evento AppDomain.CurrentDomain.AssemblyResolve.

De esta manera se puede tener control de versiones sobre los datos específicos del cliente.

Otros consejos

Cuando se dice "volver a guardar" el archivo creado por ildasm y ejecutarlo Qué quiere decir que está ejecutando todos los archivos a través de IL ilasm (el compilador de Microsoft proporcionado IL)? Si no es así, es posible que desee probar eso. No tener mucho cuidado al realizar su sustitución como IL tiene unos requisitos muy concretos y ilasm no es tan indulgente como los compiladores de nivel superior como CSC y VBC.

También puede utilizar Mono.Cecil modificar archivos de ensamblaje, de esa manera usted don' t tiene que enviar IL a sus clientes.

Si va a continuar en la ruta de envío de la fuente y compilarlo usted puede lograr lo mismo sin la participación de IL enviando la fuente C # y la compilación en el lugar desde el csc está incluido en el marco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top