Cuando hago una construcción limpia de mi proyecto C#, el dll producido es diferente al construido previamente (que guardé por separado). No se hicieron cambios en el código, solo limpiar y reconstruir.¿Por qué se produce una dll diferente después de una compilación limpia, sin cambios de código?
Diff muestra que algunos bytes en la DLL tienen cambios, algunos cerca del final y pocos cerca del final, pero no puedo entender lo que representan. ¿Alguien tiene ideas sobre por qué está sucediendo esto y cómo prevenirlo?
Esto está utilizando Visual Studio 2005/WinForms.
Actualización: No se usa el incremento automático de la versión ni se firma el ensamblaje. Si se trata de una marca de tiempo de algún tipo, ¿cómo puedo evitar que VS lo escriba?
Actualización: Después de mirar en Ildasm/diff, parece que los siguientes puntos son diferentes:
- Dos bytes de cabecera PE en el inicio del archivo.
- <PrivateImplementationDetails> {GUID} sección
- parte críptica de la tabla de cadenas cerca del final (se pregunta por qué, no cambié las cuerdas)
- piezas de ensamblaje información al final del archivo.
Ni idea de cómo eliminar cualquiera de estos, si es posible ...
".. cómo puedo evitar que VS de escribirlo?" No estoy seguro si puede decirle al vinculador que no escriba el campo TimeDateStamp en el encabezado PE 32. La solución alternativa sería escribir una utilidad que borre el campo TimeDateStamp en su evento de creación posterior en VS. –
También me gustaría saber cómo evitar que esto se incluya. Entonces solo podemos enviar los ensamblajes que han cambiado desde la última versión. –