writeline txt info c# directory structure

c# - txt - ¿Está bien tener código en la raíz de un proyecto?



string to file c# (5)

Este blog debería proporcionarle algunas lecturas interesantes, a pesar de tener tres años. Puede darle ideas además de las de estructura de directorios.

Estoy tratando de encontrar las mejores prácticas en la estructura del directorio del proyecto.

mi último pensamiento es que no debería haber clases en el directorio raíz de un proyecto. Todas las clases deben ir bajo uno de los siguientes directorios

  • UI
  • Objetos de negocio
  • Lógica de negocios
  • Acceso a los datos

Me gustaría escuchar a otras personas pensar si hay casos de uso para poner las cosas en el nivel raíz o encontrar clases que no encajarían en


Los únicos archivos que pongo en la carpeta raíz son Program.cs y Program.ico (si es una aplicación ejecutable).


No lo hago, pero no tiene nada que ver con la estructura del directorio (para mí). Quiero todo mi código en espacios de nombres significativos.


Si está hablando de C #, entonces separaría su DAL, BLL, GUI en diferentes proyectos en lugar de un proyecto. Y tiene una solución. Esto obligará a cada archivo de código a estar dentro de uno de los proyectos.

He agregado un ejemplo:

  • Solución: ProjectName
    • Proyecto: DAL (Namespace: ProjectName.DAL)
      • Carpeta: repositorios (Namespace: ProjectName.DAL.Repositories)
      • Carpeta: Contratos (Namespace: ProjectName.DAL.Contracts)
      • Archivos: la configuración de la asignación de su entidad
    • Proyecto: BLL (Namespace: ProjectName.BLL)
      • Carpeta: Servicios (Namespace: Project.BLL.Services)
      • Carpeta: Entidades (Namespace: Project.BLL.Entities)
      • Archivos: clases de configuración IoC / general Business Logic
    • Proyecto: Compartido (Namespace: ProjectName.Shared)
      • Archivos: lógica compartida general a través de toda su aplicación (por ejemplo, una constante InvalidIdentifier)
      • Este proyecto no debe hacer referencia a otros proyectos en la solución.
    • Proyecto: Sitio web (Namespace: ProjectName.Website)
      • Su interfaz de usuario de asp.net web
    • Proyecto: Winforms (Namespace: ProjectName.Winforms)
      • Tu interfaz de usuario de winforms

Si es posible, debe darle al sitio web y winforms un nombre relativo a su aplicación.


Siempre pongo la clase base para las excepciones de mis proyectos en la raíz.