Agregar sets referencedos al control de versiones o simplemente mantener reference al GAC

Tuvimos una discusión con los colegas sobre references de proyectos y sistemas de control de versiones. Estamos divididos en 2 grupos:

  • Agregue todos los ensamblados a los que se hace reference (excepto el .NET Framework pnetworkingeterminado) a una carpeta de references en su solución, haga reference desde allí y verifique esta carpeta en su sistema de control de versiones. Pros: todos pueden consultar el código y crear el proyecto, sin importar en qué entorno esté trabajando.

  • Referencia al GAC para todos los productos principales (por ejemplo, SharePoint) y solo agregue más bibliotecas exóticas en la carpeta de references, después de que todas las personas que trabajan en el proyecto tengan su sistema configurado para el trabajo (como tener SharePoint instalado para el desarrollo de SharePoint, ya que VS2010 no no abra estas soluciones sin). Pros: está seguro de que está trabajando en contra de los ensambles instalados reales y no de alguna versión beta / SP / .. que uno de los desarrolladores haya instalado y copydo en la carpeta de references.

¿Cuál es la mejor práctica? ¿O hay soluciones aún mejores?

Si hace reference a la versión GAC de ensamblados, entonces necesita mantener una list de complementos instalados para que un nuevo desarrollador pueda comenzar a trabajar de inmediato. Si no mantiene esta list, cuando un desarrollador realiza una verificación inicial desde el control de origen, la solución no se comstackrá.

Además, si hace reference al GAC, un sistema de CI puede no tener una compilation exitosa debido a las mismas razones. Sé que no es una gran solución para almacenar ensamblajes binarys en el control de código fuente, pero al less significa que todos los desarrolladores usarán las mismas versiones de files.