visual studio solucion manager ejecutable crear compilar como clean c# visual-studio-2005 build-process

solucion - crear ejecutable visual studio 2010 c#



comparando productos de versiones en lanzamiento (3)

Puede usar DumpBin para hacer comparaciones binarias de diferentes compilaciones que ignoran las variaciones por compilación. Consulte Cómo comparar imágenes binarias de las mismas compilaciones de proyectos . El artículo dice que se aplica solo a Visual Studio 6, por lo que no estoy seguro de que funcione para 2005 o más adelante.

Necesito comparar las salidas de compilación de VS2005 para asegurarme de poder reproducir exactamente el mismo producto.

cuando hago dos compilaciones una tras otra en el lanzamiento y comparo los archivos producidos obtengo diferentes archivos, haciendo una comparación de texto parece que más que solo el datetime es diferente

¿Cómo puedo construir para reproducir exactamente el mismo producto cada vez?


Siempre que construyas, el compilador incorpora:

  • La fecha y la hora
  • Un GUID (usado para la depuración, etc., creo)
  • Potencialmente, la versión de ensamblaje (que puede tener "1.2.3. *" Y rellenarse automáticamente)
  • Potencialmente un hash fuerte

Un par de opciones:

  • Averigüe dónde "se sabe que los archivos difieren inmaterialmente", borre esos bytes y luego compare
  • Use ildasm para convertir los ensamblajes a texto, y luego compare esos resultados. (No he comprobado si esto revela o no las diferencias también; puede ser que ocurra, en cuyo caso otra vez tendrías que ignorar explícitamente ciertas secciones)

Este problema aparece cada cierto tiempo, así que veré si puedo encontrar una herramienta para hacer las comparaciones, aunque es poco probable que haga frente a los ensamblados firmados, ya que la ubicación de la firma podría variar significativamente.


Una pregunta: ¿hiciste una comparación de texto para los resultados de construcción binarios? Como sé, la mayoría de los compiladores nunca producen resultados de compilación idénticos binarios para el mismo proyecto. El compilador codifica en tiempo binario de compilación, ordinal especial, etc.