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?
Java tiene una buena: Semantic Diff Utilities
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.
- 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
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.
Formas de comparar .NET Assemblies sugiere
Comercial:
Gratis:
- JustAssembly
- BitDiffer
- Reflector Diff Add-in (que ya has descubierto)