c# - CCI vs. Mono.Cecil-ventajas y desventajas
.net (2)
He visto artículos que analizan estos dos marcos similares, pero la mayoría de ellos tienen más o menos dos años. Supongo que ambos proyectos son mucho más maduros ahora que hace dos años, y la situación es más compleja.
Por lo tanto, dados los estados actuales de cada una de las bibliotecas, esperaba que alguien pudiera proporcionar una explicación detallada de las ventajas y desventajas de cada una, y cuál debería ser la preferida en este momento.
Cecil: porque para mí, el apoyo de la comunidad es mejor que el CCI. Siempre he encontrado respuestas en las listas de correo / sitios más rápido para cecil.
CCI
Pros:
- Puede darle un control más preciso sobre su rendimiento
- La última versión es un poco más madura.
Contras:
- El modelo de objetos es más complicado (y confuso si eres nuevo en IL / reflexiones de bajo nivel, como lo soy yo)
Cecil (refiriéndose a la nueva versión de git-hub )
Pros:
- Tiene un modelo de objeto más simple, por lo que será más fácil empezar a utilizarlo.
Contras:
- La última versión es menos madura, por lo que tiene menos ejemplos de código disponibles
- La API es un trabajo en progreso
- No tendrás tanto control sobre el almacenamiento en caché de nombres (para perf)
Cual yo elegiria
Al final de los pros / contras, parece que elegiría a CCI sobre Cecil. Pero no lo haría.
Cecil está en alza, tiene un diseño de API fácil, tiene una autoría activa (bueno, hace 7,5 meses y todavía parece que ahora ), y fue fácil de solucionar cualquier problema que encontré.
CCI fue bastante doloroso de codificar en contra: el diseño basado en la interfaz se lleva demasiado lejos . El código es difícil de depurar. Algunas cosas parecen completas a primera vista, pero no lo son, o no manejan más de un solo caso de uso. Las cosas de la NameTable
hicieron que mi cabeza girara (más de lo que ya era).