2010-11-25 19 views
49

En mi proyecto estoy usando algunas bibliotecas de terceros. Los incluyo usando la carpeta de referencias en Visual Studio.Dónde almacenar archivos DLL externos?

¿Pero dónde debería guardar los archivos DLL? Se hace referencia a ellos desde una ruta en el sistema de archivos, pero sería bueno si puedo incluirlo en el proyecto. ¿Pero cómo?

Respuesta

62

Esto es lo que hago:

  • Crear una carpeta lib en el nivel de la solución
  • descargar y copiar todos los archivos DLL de terceros en no
  • de referencia de la carpeta lib
  • Coloque todos los archivos DLL en el control de fuente. Estoy usando Subversion, y los agrego manualmente, pero esto es único.

También puede agregar una carpeta de solución y agregarlas allí.


ACTUALIZACIÓN 2012-12-19

la respuesta anterior fue cuando NuGet era en la infancia. Fwiw, mi enfoque en el que tenemos artículos NuGet:

  1. hacer que el anterior para las dependencias de archivos sin formato DLL (en los que no tienen un paquete NuGet)
  2. Habilitar "Paquete de restauración" para la solución
  3. Cambio packages.config archivo si es necesario para bloquear la versión de un paquete en particular
  4. no guarde el paquete de sí mismos en el sistema de control de versiones (establecido para ignorar Git, Mercurial, etc.)

De hecho, uso NuGet para administrar incluso las dependencias internas y tengo un feed privado.

+3

+1 para el recordatorio para añadirlos al control de código fuente ... Debería ser obvio, pero a menudo se pasa por alto. –

+2

El mismo procedimiento que usamos donde trabajo. Importante agregar al control de fuente para asegurarse de que funcionará para todos los demás desarrolladores también. –

+0

Saludos, he reflexionado sobre esta cuestión durante unos días, pero parece un buen consejo. – deanvmc

9

Por lo general, la estructura de mis proyectos se parece a esto (como mínimo):

projectname 
    - trunk 
     - src 
     - lib 
    - support 
     - docs 
    - releases 

La carpeta trunk contiene la copia de la fuente que estoy trabajando en este momento. Además, hay un directorio 'lib', que contiene todos los ensamblajes de terceros a los que hace referencia mi proyecto.
(hago referencia a los ensamblajes en esa posición).

La carpeta 'releases' contiene ramas del tronco. Por ejemplo, cuando se lanza v1, se toma una rama del tronco para que tenga una copia del código fuente y todas sus dependencias necesarias para compilar la versión 1 de la aplicación. (Esto es útil para las correcciones de errores. Arregle el error en esa rama, combine la corrección con el tronco, reconstruya esa rama y tenga una v1 fija de su aplicación).

Todas estas cosas entran en control de fuente. (Sí, las asambleas a las que se hace referencia también). Al hacerlo, es muy fácil si otro colega tiene que trabajar en el proyecto también. Acaba de obtener la última versión del control de origen, y él (o ella) tiene todo listo para poder compilar y compilar).

(Tenga en cuenta que esto también es cierto si utiliza algo como CruiseControl para continuous integration).

+2

+1. JAVAesque pero bueno :) – Aliostad

+1

¿Por qué es 'JAVA-esque'? Quiero decir, creo que es una buena práctica en todos los entornos. :) –

+0

+1 para "JAVAesque";) – abhilash

4

Debería mirar NuGet. Es una extensión de administración de paquetes para Visual Studio 2010 diseñada exactamente para lo que usted desea.

4

En la ventana de propiedades de Visual Studio para la referencia a la DLL, hay una propiedad llamada 'copia local' - ponga esto en verdad, y que se copiarán en el directorio bin de su proyecto local

1

Personalmente , Tengo una carpeta en mi control de origen para archivos DLL de terceros (con una carpeta para cada empresa, organización) y los consulto desde allí.

Estos archivos están entonces disponibles para todos los desarrolladores que descarguen la fuente y puedan actualizarse fácilmente.

2

Eche un vistazo a Tree Surgeon - Crea un árbol de desarrollo para un proyecto .NET, que puede ser un buen punto de partida y desde allí puede improvisar.

+0

Exactamente lo que estaba buscando, gracias por el enlace – NicoGranelli

1

Para responder correctamente, debe diferenciar entre medio ambiente y conjunto de trabajo.

Medio Ambiente:

  • Se trata de todas las herramientas y bibliotecas necesarias para construir su solución.
  • Se espera que las cosas en el entorno permanezcan razonablemente constantes.
  • Las cosas en el entorno suelen tener versiones y debe poder tener varias versiones una al lado de la otra.
  • Las cosas en el entorno suelen estar autorizadas.
  • El entorno no está bajo control de fuente.
  • Un buen ejemplo sería Visual Studio.

conjunto de trabajo:

  • Esto es, básicamente, su código fuente.
  • Son todos los requisitos necesarios para llegar a su ejecutable final.
  • Usted espera que el conjunto de trabajo cambie mucho durante el desarrollo.
  • El conjunto de trabajo debe estar bajo control de fuente.

Debe decidir en qué categoría encaja su componente.

4

Tome un vistazo a NuGet (gestor de paquetes para Visual Studio) ...

NuGet es una extensión de Visual Studio que hace que sea fácil de instalar y bibliotecas de código abierto actualización y herramientas en Visual Studio .

A continuación, lea este documento NuGet para obtener el crème de la crème:

Using NuGet without committing packages to source control

+0

Acabo de empezar a usar NuGet y me encanta. –

+1

Esta es la mejor respuesta para cualquier desarrollo reciente (2011 en adelante) – OnesimusUnbound

Cuestiones relacionadas