2011-09-01 19 views
9

Al igual que en la mayoría de las tiendas, contamos con un equipo de personas trabajando en varios proyectos que necesitan acceder a la misma información básica y funciones relacionadas con nuestro negocio, generalmente en C#. Actualmente solo copiamos clases comunes de un proyecto a otro, pero todos comienzan a tener sus propios sabores y queremos consolidarnos.¿Cuál es la mejor manera de hacer que las bibliotecas compartidas estén disponibles para múltiples aplicaciones?

Utilizamos Tortoise SVN y hemos decidido mantener un proyecto separado para contener nuestras clases comunes, pero no estamos seguros de la mejor manera de implementar este código común para nuestras diversas aplicaciones. Trabajamos para una tienda de TI interna que puede dictar todo acerca de cómo los usuarios acceden a las aplicaciones, no tenemos que preocuparnos por la liberación de nuestros productos en el mundo real.

Algunos de nuestros pensamientos han sido:

  1. Compilar las clases en un solo archivo DLL y cargarlo en la caché de ensamblados global (GAC)
  2. Compilar las clases en un solo archivo DLL y guardarlo en una unidad compartida ubicada centralmente para ser referenciada por todos los demás proyectos
  3. Compilar las clases en una sola DLL e incluirla en cada proyecto
  4. Solo buscar las clases más recientes al iniciar un proyecto, pero no tener una biblioteca central compartida (nuestra interpretación de esto: http://www.yosefk.com/blog/redundancy-vs-dependencies-which-is-worse.html)
  5. SVN Externals http://svnbook.red-bean.com/en/1.0/ch07s03.html

Sé que esto es un problema común, y si uno pasa algún tiempo buscando en estas u otras opciones, que invariablemente encuentro con personas que explican las dificultades de cada método (de versiones, pruebas de regresión , "DLL Hell", "GAC es una mierda", etc.). Apenas puedo encontrar a alguien hablando de lo que FUNCIONA y por qué. ¿Hay un método preferido?

+0

Al 'copiar clases comunes' ¿significa eso que literalmente está haciendo un nuevo archivo .cs en el proyecto y copiando y pegando los datos de la clase que desea en el nuevo archivo .cs? – docmanhattan

+0

@docmanhattan me refiero a copiar los archivos .cs ellos mismos y agregarlos a los nuevos proyectos – kscott

Respuesta

2

En mi empresa tenemos el mismo problema. Actualmente, solo usamos archivos .bat que van a nuestro Troncal SVN y extraemos las referencias .dll más recientes y llenamos una carpeta de Referencias local para el proyecto en el que estamos trabajando.

Sin embargo, actualmente estamos trabajando para cambiar este sistema a NuGet. No estoy 100% seguro de cómo funciona, pero definitivamente vale la pena investigarlo. Parece que puedes configurarlo en un repositorio de código compartido, y luego en Visual Studio usando un complemento, es tan simple como hacer clic derecho y presionar 'Actualizar' cada vez que necesites obtener el código más nuevo.

+0

Nuget se puede configurar de forma privada, por lo que también lo recomendaría. Hará que las actualizaciones de la biblioteca sean muy sencillas – KallDrexx

Cuestiones relacionadas