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:
- Compilar las clases en un solo archivo DLL y cargarlo en la caché de ensamblados global (GAC)
- 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
- Compilar las clases en una sola DLL e incluirla en cada proyecto
- 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)
- 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?
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
@docmanhattan me refiero a copiar los archivos .cs ellos mismos y agregarlos a los nuevos proyectos – kscott