¿Cómo puedo probar la compatibilidad hacia atrás de la API entre los ensamblados .net?

Tengo un ensamblaje que proporciona una API y lo utilizan otros ensamblajes. Necesito verificar que una versión más nueva de la API dll aún sea compatible con los ensamblajes anteriores que usaban la versión anterior de la API.

He encontrado un par de preguntas que hacen lo mismo, pero no hay respuestas que resuelvan mi problema:

Las herramientas sugeridas solo pueden comparar dos ensamblajes y decir si hay cambios de ruptura posibles en la API, pero no si la API más nueva realmente rompe el ensamblaje anterior que lo usa. Me gustaría encontrar una herramienta o escribir una prueba que pueda comprobar si cada una de las dll más antiguas puede funcionar con mi nueva API.

En cuanto a los cambios en la API, es más probable que solo la extienda, pero a pesar de que todavía puede romper el código en ensamblajes anteriores. Algunos de los ejemplos de tales cambios se pueden encontrar aquí:

  • Una guía definitiva para los cambios de ruptura de API en .NET
  • .NET: con respecto a AssemblyVersion, ¿qué define la compatibilidad binaria?

Por ahora, la única solución que veo es comstackr el código fuente de los conjuntos anteriores con la API más nueva, pero me gustaría hacerlo solo con conjuntos y agregarlos como parte de mis pruebas unitarias. ¿Hay alguna mejor manera de que pueda manejar eso?

editar:

Estoy buscando una herramienta que pueda automatizar el proceso de verificación de la compatibilidad con versiones anteriores entre los ensamblados .net. (línea de comando o con alguna api también)

Lo que quieres hacer es hacer un diff y generar una lista de cambios de última hora. Entonces desea buscar si de sus ensamblajes utiliza alguna de las API dañadas. Puedes hacer esto con la herramienta ApiChange para hacer la diferencia y encontrar a los usuarios afectados.

Para hacerlo más concreto. Si ha eliminado un método de una interfaz, entonces necesita encontrar a todos los implementadores y usuarios de este método en clases que usen el método de la interfaz o cualquier clase que implemente este método.

ApiChange puede buscar implementadores y usuarios de métodos específicos en la línea de comandos con los comandos -whoimplementsinterface y -whousesmethod. No está automatizado en la línea de comandos, pero puede usar directamente ApiChange.Api.dll para automatizar estas consultas.

Edit1:

Acabo de olvidar: la herramienta ApiChange tiene en realidad la funcionalidad que le interesa. Es la opcion

-ShowrebuildTargets -new -old [-old2] -searchin

Lo usamos en nuestro departamento con buenos resultados. Los únicos gotcha son los archivos XML Intellisense. Si otro objective no usa el método eliminado, pero hace referencia a él dentro del XmlDoc, el comstackdor escribirá una advertencia de que se hizo referencia a un método no existente. Esto es bastante difícil de detectar e implicaría analizar los archivos docu intellisense también. Pero este es un caso bastante avanzado.

Me he pasado el día buscando una respuesta a esto. Parece que las herramientas a las que se hace referencia en las preguntas relacionadas (cerradas inútilmente) ahora están muertas o son tan buenas. Pero acabo de echar un vistazo a la herramienta de ensamblaje de Telerik, JustAssembly, que se ve mucho mejor que rodar la suya, lo cual, si nos fijamos en su biblioteca, parece ser un montón de trabajo y es probable que salga mal.

Tienen una interfaz de usuario que no es de mucha ayuda desde el punto de vista de la integración en su comstackción de CI, es bastante básico, pero puede comstackr la biblioteca desde la fuente, que acabo de hacer y la biblioteca parece que tiene todo lo que necesitas para ponerte en marcha bastante rápido.