Ubicación de Dll's de terceros en Control de versiones para el proyecto .NET

¿Cuál sería la location ideal (directory) para comprobar en Dll's de reference de terceros para un proyecto .NET en un sistema de control de versiones. Por lo general, he visto a la mayoría de las personas ponerlos en un contenedor, de modo que el time de ejecución pueda recoger automáticamente estos files. Sin embargo, ese es el path correcto a seguir.

Originalmente quería tener un directory separado que sea paralelo a bin llamado lib, que contendrá todos los Dll de terceros, pero esto necesita cambios en el file de configuration de las aplicaciones para que el directory de la biblioteca sea recogido por el time de ejecución. Mi idea aquí es que lib contendrá dll's de terceros mientras bin contendrá los proyectos binarys (podría ser Dll o Exe)

¿Cuál es la forma preferida? La concentración es la location en el Control de versiones y no solo el Sistema de files físicos.

Usamos la siguiente estructura de directorys (más detalles disponibles en mi blog ):

Solution\ Libraries\ third-party DLLs here Source\ Project1\ Project2\ 

Cada proyecto hace reference (utilizando la pestaña "Buscar" en el cuadro de dialog Agregar reference) los ensamblajes en la carpeta "Bibliotecas". Estos se copyn automáticamente en la carpeta "bin" de cada proyecto en time de compilation. (La carpeta "Bibliotecas" está, por supuesto, comprometida con el control de versiones).

Haga que el directory separado contenga los ensamblajes de terceros (esto hará que las cosas sean más fáciles de mantener en el control de fuente) y luego cree references en su proyecto para esos ensamblajes. Luego, en la compilation, sus ensamblajes de terceros se copyrán en su \bin y no tendrá que realizar ningún cambio en la configuration.

Supongo que esas DLL de terceros se usarían en más de un proyecto suyo. Por lo tanto, poner el file DLL directamente debajo del contenedor de cada proyecto significa que usted tiene tantas copys de DLL (en el VCS) como proyectos, lo que no es elegante. Como mencionó Andrew H., si los files DLL son realmente comunes, deberían includese en un directory común que todos los demás proyectos que lo necesiten lo utilizarán. La única pega aquí es poder distinguir diferentes versiones de la misma DLL: con el time, puede terminar con algo como:

 /common/ThirdPartyLibrary.dll (version 1.2) /common/ThirdPartyLibrary.dll (version 1.3) 

La mejor manera que conozco (por ahora) es cambiar el nombre de la DLL de terceros con un número de versión explícita y referirme a ese nuevo nombre en tu proyecto, de modo que tu proyecto siempre, con security, se referirá a la versión correcta. Me gusta:

 /common/ThirdPartyLibrary_v1.2.dll /common/ThirdPartyLibrary_v1.3.dll