¿Cómo trato las dependencies a múltiples versiones de la misma DLL en Visual Studio?

por ejemplo: tengo la aplicación A, que hace reference a la biblioteca A y la biblioteca B. además, la biblioteca A hace reference a una versión diferente de la biblioteca B. (todas están en C #)

Quiero que todas las references apunten a un file DLL binary. ahora tengo una carpeta de lib como así:

lib/LibA/v1/LibA_1.dll lib/LibB/v1/LibB_1.dll lib/LibB/v2/LibB_2.dll 

digamos que la aplicación hace reference a LibA v1 y LibB v2, pero LibA depende de LibB v1. ¿Cuál es la forma "correcta" de configurar esto, si es posible? Me gustaría evitar el GAC y minimizar el toque manual con los files, porque la idea es que un desarrollador pueda consultar la aplicación A desde svn y comstackrla sin cambios en las routes / references, suponiendo que tengan el tree de carpetas lib. controlado.

en este momento me doy count de que Visual Studio no está copyndo la versión de LibB de LibA en el directory de salida. ¿Es suficiente la diferencia de nombre de file o tengo que cambiar la versión en el ensamblaje?

La forma correcta de hacerlo es usar ILMerge . Cuando comstack LibA_1, use ILMerge para combinar estáticamente LibB_1 en el file dll LibA_1. Su aplicación hará reference a LibA_1 y LibB_2 y no tendrá más conocimiento de que LibA_1 tiene realmente LibB_1 embedded en su file dll. He usado este enfoque antes y funcionó bastante bien.

Esta es realmente la única opción que tiene a less que esté listo para actualizar LibA_1 para usar LibB_2. Si LibB_1 y LibB_2 son significativamente diferentes, la actualización de LibA_1 puede consumir mucho time.