¿Cómo puedo parchar los ensamblados .NET?

Si compilo un proyecto de C # dos veces, obtendré dos ensamblajes. Estos ensamblajes no son exactamente iguales (utilizando un diferencial binario). Puedo pensar en las razones por las cuales esto es así, pero el hecho es que la fuente de los dos ensamblajes es idéntica.

Me preocupa crear un parche entre estos conjuntos y aplicar el parche en la máquina de un cliente.

¿Alguien sabe de una biblioteca (preferiblemente .NET) o herramienta con la que pueda crear y aplicar parches?

Idealmente, también debería manejar pequeños cambios, como cambiar dependencias a nivel de proyecto o ajustar algunas líneas en la fuente. No tiene que ser capaz de hacer frente a cambios más grandes, porque me complace reemplazar los ensamblajes en su totalidad en este caso.

Actualizar:

Creo que un poco más de fondo podría ayudar a aclarar a qué me refiero. Tengo un servidor de integración continua construyendo mi aplicación. Cambio el archivo y la versión de ensamblaje para reflejar el número de compilación y la versión que estoy creando. Podría haberlo hecho de otra manera, pero esta es la opción que me gusta.

Esto hace que las referencias de ensamblaje cambien cuando compilo mi aplicación, pero estoy contento con eso. Ahora me preocupa distribuir una actualización a una versión publicada anteriormente. Construyo actualizaciones usando InstallShield. Los ensamblajes disponibles para InstallShield se reducen a pequeños parches. Estos no aumentan mucho el tamaño de la actualización.

Mi aplicación tiene algunos archivos de datos, que son básicamente archivos cifrados que contienen ensamblajes. InstallShield no tiene acceso a estos ensamblajes ni comprende mi archivo. No sabe cómo descifrarlo y extraerlo. He escrito mi propia rutina de parches que encuentra los archivos modificados en el archivo anterior y los reemplaza con la nueva versión actualizada. Básicamente una estrategia de búsqueda y reemplazo.

El único archivo contiene casi un centenar (y creciente) de estos conjuntos y algunos de estos conjuntos contienen archivos de datos grandes como recursos. Estos ensamblajes dependen de los ensamblajes que forman parte de la aplicación. También se compilan durante la compilación de integración continua. No compilarlos durante la compilación dejará espacio para problemas de dependencia y no estoy dispuesto a tratar de manejar eso. Cada vez que creo un parche, se incluyen todos estos ensamblajes. Ahora estoy buscando opciones para reducir el tamaño del parche al generar parches para estos ensamblajes.

Respuestas a la pregunta(2)

Su respuesta a la pregunta