Ho un assembly che fornisce un'API e viene utilizzato da alcuni altri assembly. Devo verificare che una versione più recente di DLL dll sia ancora compatibile con gli assembly precedenti che utilizzavano la versione precedente dell'API.Come posso verificare la compatibilità all'indietro dell'API tra .net assembly
ho trovato un paio di domande che chiedono la stessa cosa, ma non ci sono risposte che risolvono il mio problema:
strumenti suggeriti può confrontare solo due assemblee e dire se ci sono possibili rotture delle modifiche in API, ma non se la più recente API rompe davvero il vecchio assembly che lo utilizza. Mi piacerebbe trovare uno strumento o scrivere un test che sarà in grado di verificare se ognuna delle vecchie DLL può funzionare con la mia nuova DLL API.
Per quanto riguarda le modifiche apportate all'API, è più probabile che lo estenderò solo, ma anche se è ancora possibile interrompere il codice negli assiemi più vecchi. Alcuni degli esempi di tali cambiamenti può essere trovato qui:
- A definite guide to API-breaking changes in .NET
- .NET: with respect to AssemblyVersion, what defines binary compatibility?
Per ora l'unica soluzione che vedo è quello di compilare il codice sorgente delle assemblee più anziani con la più nuova API , ma mi piacerebbe farlo solo con gli assembly e aggiungerli come parte dei miei test unitari. C'è un modo migliore di gestirlo?
modifica:
sto cercando uno strumento che sarà in grado di automatizzare il processo di verifica della compatibilità tra NET. (riga di comando o anche con qualche api)
Probabilmente è la mia mancanza di comprensione, ma non capisco che lo strumento che stai cercando potrebbe fare meglio o più facilmente che semplicemente compilando le fonti combinate. Voglio dire, lo strumento avrebbe bisogno sia della vecchia che della nuova sorgente per essere in grado di analizzare i cambiamenti di rottura nel modo in cui intendevi, no? Forse puoi riempirmi. –
@GertArnold Ho aggiornato la mia domanda, vorrei automatizzare questo processo, quindi potrebbe non essere molto conveniente compilare manualmente il codice sorgente o eseguire uno strumento manualmente – username