2010-07-23 11 views
6

Me gustaría comparar varios dlls de una instalación con varios dlls de otra instalación de la aplicación con la que estoy trabajando. Necesito asegurarme de que sean exactamente iguales. ¿Cómo comparo dos dlls para asegurarme de que tienen exactamente los mismos métodos, propiedades, versión, etc.?¿Cómo comparo los contenidos de dos dlls?

Empecé a utilizar RedGate .Net Reflector, pero la tarea se volvió tediosa, así que pensé que podría dar una oportunidad, ver si alguien más había estado en mi situación antes y tiene una solución rápida.

¡Gracias!

Respuesta

7

Supongo que no puede confiar en el control de versiones del ensamblaje para responder a esto.

Una búsqueda rápida en google apareció esta publicación por Scott Hanselman que apunta a varias herramientas que pueden resolver su problema.

+0

El SN de un ensamblaje no contiene implícitamente información ABI: -/ –

+0

Sí, me doy cuenta de que, el hecho de que el OP necesite comparar dos ensamblajes indica que hay algunos problemas de gestión de versiones. –

+0

Sí, el control de versiones de los ensamblados nunca se actualizó para dos versiones, por lo que intento ayudar a algunos clientes a encontrar la versión en la que se encuentran. – Eric

2

Editar: Para consejos de determinación no programáticos, ver confusedGeeks responden :-)

me gustaría utilizar un conjunto de SN para determinar la "versión", entonces;

Si el ABI no se refleja en la versión, realice un md5sum secundario contra los archivos o realice una comparación reflexiva de los dos ensamblajes. El md5sum, por supuesto, "captaría" cambios internos/de compilación, incluso si el ABI no cambió. Reflejar el ABI, aunque más complicado y potencialmente más lento, podría determinar los cambios de ABI de forma directa.

Podría ser más fácil y suficiente simplemente "sobrescribir" cualquier ensamblaje con la misma versión (y dejar que las versiones anteriores/posteriores permanezcan hasta que quien las coloque las quite).

+0

es un md5sum suficiente para validar que son iguales? Ya que estoy comparando un ensamblado versionado con un ensamble que no tiene el sello de versión ... ¿no cambiaría eso el md5sum entre los dos? – Eric

+0

@Eric A menos que esté preocupado por algunos hackers NIHM muy, muy inteligentes que intentan robar su queso, el md5sum se puede usar de manera confiable: diferentes sumas md5 -> contenido de archivo diferente. –

2

Uso WinMerge todo el tiempo para realizar esta tarea. Incluso puedes comparar directorios completos. Esto es por supuesto si solo necesita saber si son iguales, ya que no le mostrará ningún código.

3

¿Por qué no utilizar Dependency Walker? Copie todas las funciones exportadas en un archivo de texto. Repita lo mismo con la otra DLL. A continuación, diferencie los dos archivos de texto.

Lo hice una vez para resolver el error 127, que decía que no podía cargar la DLL porque faltaba una dependencia 'desconocida'.

Cuestiones relacionadas