Tengo un ensamblado que proporciona una API y que otros ensamblajes utilizan. Necesito verificar que una versión más nueva de API dll todavía sea compatible con los ensamblajes anteriores que usaban la versión anterior de API.¿Cómo puedo probar la compatibilidad con versiones anteriores de la API entre los ensamblados de .NET
he encontrado un par de preguntas que hacen la misma, pero no hay respuestas que resuelven mi problema:
herramientas sugeridas sólo se puede comparar dos ensamblados y decir si hay posibles cambios en la API, pero no si la API más nueva realmente rompe el ensamblaje anterior que la usa. Me gustaría encontrar una herramienta o escribir una prueba que pueda verificar si cada uno de los dlls más antiguos puede funcionar con mi nueva API dll.
En cuanto a los cambios en la API es más probable que solo lo extienda, pero a pesar de que todavía puede romper el código en ensamblajes anteriores. Algunos de los ejemplos de este tipo de cambios se puede encontrar aquí:
- A definite guide to API-breaking changes in .NET
- .NET: with respect to AssemblyVersion, what defines binary compatibility?
Por ahora la única solución que veo es para compilar el código fuente de los conjuntos de mayor edad con la nueva API , pero me gustaría hacerlo solo con ensamblajes y agregarlos como parte de mis pruebas unitarias. ¿Hay alguna forma mejor de que pueda manejar eso?
edición:
Estoy buscando una herramienta que será capaz de automatizar el proceso de verificación de la compatibilidad hacia atrás entre los ensamblados .NET. (línea de comandos o con alguna API también)
Probablemente es mi falta de entendimiento, pero no entiendo por qué la herramienta que está buscando podría hacer mejor o más fácil que simplemente compilar las fuentes combinadas. Quiero decir, la herramienta necesitaría tanto la fuente antigua como la nueva para poder analizar los cambios de ruptura de la forma en que lo intentas, ¿no es así? Tal vez me pueda completar. –
@GertArnold He actualizado mi pregunta, me gustaría automatizar este proceso, por lo que puede no ser muy conveniente compilar el código fuente manualmente o ejecutar una herramienta manualmente – username