c# .net mono.cecil cci

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