Qual è la migliore pratica nel mondo .NET per gestire le dipendenze transitive che causano conflitti di versione?
In dettaglio: il progetto A dipende dal progetto B, che a sua volta dipende dalla libreria C
anche
Il progetto A dipende anche dal progetto X, che dipende da una versione DIVERSA e (potenzialmente) incompatibile della libreria C.
A-> B-> Cv1.0
&
A-> X-> Cv2.0
dove
Cv1.0 Cv2.0
C’è un modo per farlo funzionare ?
Può essere fatto SENZA usare il GAC?
Può essere fatto anche se B e X sono solo in formato binario (fonte non accessibile)?
In altre parole, esiste un modo in cui posso utilizzare Project B e X ciascuno utilizzando le proprie dipendenze quando vengono utilizzati insieme nel Progetto A senza causare conflitti.
NOTA: mi rendo conto che idealmente non dovrei avere questo problema, ma poiché la dipendenza dalle librerie esterne si espande, questo sarà un effetto collaterale inevitabile. Quindi mi chiedo se dovesse accadere come meglio affrontarlo.
Ci sono un sacco di domande simili su Stack Overflow. Ad esempio, referenziamento di 2 diverse versioni di log4net nella stessa soluzione
Sommario:
è ansible ottenere il token di chiave pubblica di C utilizzando sn -T C.dll
Se v1.0 e v2.0 di C hanno una chiave pubblica diversa (anche se idealmente non dovrebbero), allora includi due tag dependentAssembly.