Nuestro equipo .NET trabaja en proyectos para nuestra empresa que se dividen en distintas categorías. Algunas son aplicaciones web internas, otras son aplicaciones web externas (públicas), también tenemos aplicaciones internas de Windows para nuestros usuarios de oficinas corporativas y aplicaciones de Windows Forms para nuestras ubicaciones minoristas (tiendas). Por supuesto, porque odiamos la reutilización de código, tenemos un montón de código que se comparte entre las diferentes aplicaciones. Actualmente estamos usando SVN como nuestro control de código fuente, y tenemos nuestro repositorio distribuido así:TFS y proyectos compartidos en soluciones múltiples
- = folder, | = Visual Studio Solution
-SVN
- Internet
| Ourcompany.com
| Oursecondcompany.com
- Intranet
| UniformOrdering website
| MessageCenter website
- Shared
| ErrorLoggingModule
| RegularExpressionGenerator
| Anti-Xss
| OrgChartModule etc...
Así que ..
La solución OurCompany.com en la carpeta de Internet podría tener un sitio web proyecto, y también incluiría los proyectos ErrorLoggingModule, RegularExpressionGenerator y Anti-Xss del directorio compartido.
Del mismo modo, nuestra solución de sitio web UniformOrdering tendría cada uno de estos proyectos incluidos en la solución también.
Preferimos tener una referencia de proyecto a una referencia .dll porque, en primer lugar, si necesitamos agregar o corregir una función en el ErrorLoggingModule mientras trabajamos en el sitio web OurCompany.com, está ahí. Además, esto nos permite construir cada solución y ver si los cambios en el código compartido rompen otras aplicaciones. Esto también debería funcionar bien en un servidor de compilación si estoy en lo correcto.
En SVN, no hay ningún problema con esto. SVN y Visual Studio no están vinculados de la misma manera que el control de origen de TFS. Nunca supimos cómo trabajar este tipo de estructura en TFS cuando lo usábamos, porque en TFS, el proyecto TFS siempre estuvo vinculado a una Solución de Visual Studio. El repositorio de código fuente era un elemento secundario del proyecto TFS, por lo que, si queríamos hacerlo, teníamos que duplicar el código compartido en el repositorio de código fuente de cada proyecto TFS. Como lo expresó mi compañero de trabajo, esto "rompe todas las mejores prácticas conocidas sobre la reutilización y simplicidad del código". Fue suficiente para nosotros romper el trato al cambiar a SVN.
Ahora, sin embargo, nos enfrentamos a una verdadera reparación de nuestros procesos de desarrollo, y la Administración del ciclo de vida de las aplicaciones de TFS es bastante similar a lo que queremos y cómo queremos trabajar. Nuestro único problema es el problema del código compartido.
Estamos evaluando otras soluciones comerciales y de código abierto, pero como ya estamos pagando por TFS con nuestras suscripciones a MSDN, y TFS es exactamente lo que queremos, REALMENTE nos gustaría encontrar una forma de evitarlo. problema.
¿Alguien más ha enfrentado esto y ha encontrado una solución?
Si has visto un artículo o una publicación sobre esto que puedes compartir conmigo, también sería útil.
Como siempre, estoy abierto a respuestas como "Usted está mirando todo mal, cabeza hueca, aquí está la forma en que debe hacerse.
Gracias por tomarse el tiempo para leer esto y responder. Cuando tuvimos el problema originalmente, estábamos usando la versión 2005. ¿Puede señalarme, por casualidad, a la documentación sobre cómo VS2010 es diferente de 2005/2008? Estaríamos usando 2010 si volvemos a TFS. Voy a configurar un entorno virtual y probar los dos enfoques que mencionaste. Se ve bien, así que +1, y si lo usamos (o si no obtengo mejores respuestas) también aceptaré tu respuesta. – David
2010 tomó un enfoque diferente para los proyectos de equipo. Tienen una nueva cosa llamada "Project Collections" que sería exactamente lo que quieres. La información está aquí: http://msdn.microsoft.com/en-us/library/dd236915.aspx – NotMe
Nuevamente, gracias. Lo siento, tomó tanto tiempo, pero me tomó un tiempo configurar mi entorno. Estoy aceptando tu respuesta principalmente en base a esta última nota, ya que ES exactamente lo que quería, pero tu respuesta original también fue buena. Aprecio que te tomes el tiempo. – David