remarks example cref c# .net vb.net debugging reverse-engineering

example - remarks c#



Comparar ensamblados compilados.NET? (6)

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 ..]

¿Hay algún buen programa para comparar y compilar 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?



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

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.


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.


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 article con capturas de pantalla.