tesis sistemas sistema recomendacion c# .net development-environment

c# - sistemas - sistema de recomendacion tesis



¿Cómo configuras tu árbol de desarrollo de.NET? (8)

En mi lugar de trabajo tenemos múltiples proyectos, donde 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 debería averiguar cómo incorporaría varios proyectos, por ejemplo, una biblioteca de fuente compartida entre múltiples soluciones.

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

-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 esto. 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.

Tiene alguna idea sobre esto?


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

También tengo una carpeta de script de base de datos debajo de projectname (cuando es una aplicación impulsada por datos)

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


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


También utilizamos TreeSurgeon y estamos muy contentos con él. Nuestra estructura se ve así:

Rama

  • construir
  • lib
  • src
    • <varios directorios src para aplicaciones, pruebas, migraciones de bases de datos, etc.)
  • herramientas

El maletero

  • Lo mismo que arriba

Usamos una estructura como esta:

  • CompanyNameOrCoreProjectName
    • Rama
      • BranchName
        • CopyOfTrunk
    • El maletero
      • Escritorio
      • Conjuntos referenciados
      • Compartido
      • 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.


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.