2008-09-16 10 views
15

¿Cómo configuras tu árbol de desarrollo de .NET? Yo uso una estructura como esta:¿Cómo configuras tu árbol de desarrollo de .NET?

-projectname 
--config (where I put the configuration files) 
--doc (where I put all the document concerning the project: e-mails, documentation) 
--tools (all the tools I use: Nunit, Moq) 
--lib (all the libraries used by the solution: ninject or autofac) 
--src 
---app (sourcefiles) 
---test (unittests) 
solutionfile.sln 
build.csproj 

El signo "-" marca los directorios.

Creo que es muy importante tener una buena estructura en este aspecto. Debería poder obtener el código fuente del sistema de control de origen y luego construir la solución sin abrir Visual Studio o instalar ninguna biblioteca de terceros.

¿Alguna idea de esto?

Respuesta

8

Utilizamos un diseño muy similar a la cubierta en el blog de JP Boodhoo titulado Directory Structure For Projects.

+0

Ese vínculo está detrás de algún tipo de pared de registro. –

+0

Gracias por hacerme saber que el blog se movió, debería funcionar ahora. – BigJump

0

en mi lugar de trabajo que tienen múltiples proyectos, en los que cada proyecto tiene su propio subdirectorio, así: -proj1
--proj1.csproj
-proj2
--proj2.csproj
-proj3
--proj3.csproj
solutionfile.sln

El resto de la configuración se ve bien, pero creo que se debe averiguar cómo se incorporan múltiples proyectos, por ejemplo, una biblioteca de código compartido entre varias soluciones.

0

Si entiendo tu estructura correctamente, creo que vas a tener muchos duplicados en tu árbol de desarrollo relacionados con "herramientas" y "lib". Lo más probable es que estas sean herramientas y bibliotecas externas que puedan ser compartidas por diferentes proyectos.

algo que funciona bien para nosotros es:
solutionfile.sln
-src
--projectname
---config
---doc
---source files (structure representing namespaces)
-test
--testprojectname (usually, a test project per source project)
---unit test files (structure mirroing the structure in the source project)
-lib
--libraryname (containing the libraries)
-tools

0

no tengo herramientas, en el proyecto. Las herramientas están en un recurso compartido de red. Si el espacio en disco es barato, pero en estos días ... vamos :)

También tengo una carpeta de scripts de base de datos a continuación projectname (cuando se trata de una aplicación impulsada por datos)

Por supuesto que no importa tanto cómo está configurado, pero el hecho de que un estándar organizado lógico se utiliza para adaptarse al proyecto y se cumple con buena disciplina. Esto es útil ya sea que estés solo o en equipo.

+1

Las herramientas pueden tener diferentes versiones. Si sus proyectos anteriores dependen de la versión 1 de la herramienta y decide actualizar a la versión 2 de la herramienta, debe actualizar todos los proyectos anteriores para que sean compatibles con la versión 2 de la herramienta. Controlar todo para controlar la fuente hace la vida un poco más fácil. :-) – Fossmo

+0

Estoy completamente de acuerdo con Fossmo. Inicialmente, no me gustaba la idea de duplicar las herramientas binarias en cada proyecto que creo. Pero reduce los problemas que puede tener en situaciones como esa y el costo del disco es realmente muy mínimo. –

+0

También se pueden compartir diferentes versiones, por lo que no incluirlas en el árbol de proyectos no significa que tenga que actualizarlas. –

1

se utiliza una estructura como esta:

  • CompanyNameOrCoreProjectName
    • Branch
      • BRANCHNAME
        • CopyOfTrunk
    • tronco
      • de Escritorio
      • ReferencedAssemblies
      • compartidas
      • Soluciones
      • prueba
      • Webs

Luego solo asegúrese de que todos los archivos de proyecto/solución solo usen rutas relativas y la bifurcación funciona bien. Las aplicaciones de escritorio/web son para proyectos de los tipos respectivos, la prueba es para cualquier proyecto de prueba de unidad, la carpeta de soluciones tiene una carpeta para cada solución con solo el archivo de solución en ella. ReferencedAssemblies contiene todos los ensamblajes que no incluimos en la solución (a veces son proyectos locales que simplemente no queremos construir cada vez que construimos la solución o conjuntos de terceros como rhinomocks o log4net, etc. Shared es para cualquiera de las bibliotecas principales (acceso a datos, lógica comercial, etc.) que se utilizan en varias soluciones.

2

TreeSurgeon es una herramienta que configurará un árbol de directorios para usted, con todas las dependencias requeridas y un archivo esquemático nant. En ese enlace, también puede encontrar una serie de publicaciones de blog de su creador original, Mike Roberts, que explican algunas de las elecciones deliberadas detrás de la estructura que TreeSurgeon le brinda, por ejemplo, por qué está bien tener duplicación entre lib y herramientas, por qué es importante tener todas las dependencias presentes, etc.

No lo he usado por un tiempo, así que no puedo recordar si todavía estoy de acuerdo con todas las elecciones que hace, pero no creo que pueda equivocarse demasiado con eso.

0

También utilizamos TreeSurgeon y estamos muy contentos con él. Nuestra estructura se parece a:

Branch

  • acumulación
  • lib
  • src
    • < varios directorios src para aplicaciones, pruebas, migraciones db, etc.)
  • herramientas

tronco

  • Igual que el anterior
Cuestiones relacionadas