Comparar ensamblados comstackdos .NET?

¿Hay algún buen progtwig para comparar y comstackr ensamblados .NET?

Por ejemplo, tengo HelloWorld.dll (1.0.0.0) y HelloWorld.dll (2.0.0.0), y quiero comparar las diferencias ¿cómo puedo hacer esto?

Sé que puedo usar .NET Reflector y usar el plugin Assembly Diff. ¿Hay otras buenas herramientas para hacer esto?

Formas de comparar .NET Assemblies sugiere

Comercial:

  • NDepender

Gratis:

  • JustAssembly
  • BitDiffer
  • Reflector Diff Add-in (que ya has descubierto)

Dos caminos.

Podrías ILDASM y diferenciar con herramientas clásicas.

O puede usar NDepends, que le costará esa característica.

[Pieza a C # bloaters ..]

Solo tuve que comparar dos revisiones de la misma DLL, que tenía la misma versión (necesitaba implementar una pequeña revisión e implementar la DLL en producción, pero quería asegurarme de que no se filtraran otros cambios en el código). Idealmente, me gustaría que el complemento Assemby Diff me muestre la diferencia, pero no funciona (cree que estoy comparando una DLL con ella). Entonces esto es lo que hice:

  • Creé dos carpetas para mantener los archivos fuente desarmados.
  • Se utilizó la opción Exportar del reflector (del menú contextual) para generar archivos fuente de cada DLL en las carpetas creadas en el paso anterior.
  • Usó la herramienta gratuita DiffMerge para comparar dos directorios; las herramientas me mostraron los archivos modificados y la diferencia.

Es un poco kludgy, pero parece funcionar. Aunque me gustaría que el complemento Assembly Diff funcionara.

ACTUALIZACIÓN: Se supone que la última versión del complemento Assembly Diff soluciona el problema de comparar dos versiones del mismo ensamblado. Darle una oportunidad.

La herramienta NDepend ofrece muchas características para manejar la diferencia de código .NET. Descargo de responsabilidad: soy uno de los desarrolladores de la herramienta .

El panel Buscar por cambio está dedicado a examinar el código del ensamblado. Darse cuenta de:

  • Puede conectarse a NDepender cualquier herramienta de diferencia de código utilizada por el menú Comparar versión anterior y posterior del archivo fuente
  • Si no tiene el código fuente, solo los ensamblados en bruto, existe la opción Comparar versión anterior y posterior desmontada con Reflector

NDepender búsqueda por panel diferido

Observe también en la captura de pantalla que se genera una consulta de código CQLinq para explorar el diff.

from m in Application.Methods where m.CodeWasChanged() select new { m, m.NbLinesOfCode } 

Muchas otras consultas predeterminadas de diferencias y reglas se proponen por defecto, que le permitirán explorar el código .NET diff de una manera inteligente.

  • Tipos que solían estar cubiertos al 100% pero ya no
  • Cambios de Breaking API: Métodos
  • Evite que los métodos complejos sean aún más complejos
  • Evite disminuir la cobertura del código mediante pruebas de tipos
  • A partir de ahora, todos los tipos agregados o refactorizados deben respetar los principios básicos de calidad
  • Evite transformar un tipo inmutable en uno mutable
  • Heurística para encontrar tipos movidos de un espacio de nombres o ensamblado a otro

Una opción más es LibCheck de Microsoft.

Bastante vieja herramienta de consola para obtener solo diff public API. No podría ejecutar sin depurar y redirigir a una versión .net más reciente. Sin embargo, me dio un resultado muy claro y lo voy a usar más adelante.

Aquí hay un artículo con capturas de pantalla.

Java tiene una buena: Semantic Diff Utilities