Struttura delle directory per una soluzione .NET


16

Recentemente abbiamo fatto visita a un appaltatore che ha messo in dubbio la nostra metodologia di strutturazione dei progetti. Si noti che mi riferisco in modo specifico alla struttura delle directory. Ha suggerito di utilizzare le linee guida di Microsoft. Ho pensato che sarei stato in grado di Google "Linee guida Microsoft struttura della directory di progetto .NET" e trovare qualcosa di utile, tuttavia questo ha dimostrato di non essere il caso. Allo stato attuale facciamo qualcosa del genere:

[Company.System.Feature]
  |-doc
     |Sandcastle project
  |-lib
     |Nuget packages
  |-src
    |-Project1 e.g. web
    |-Project2 e.g. business logic
    |-UnittestProject1
    |-Specs

La cartella doc contiene una soluzione Sandcastle come quella descritta qui: https://www.codeproject.com/Articles/15176/Sandcastle-Help-File-Builder (vedi: percorsi assoluti e relativi). Pertanto la cartella doc contiene una cartella della Guida, che contiene il file della guida generato. La cartella lib contiene tutti i pacchetti Nuget.

Esistono linee guida Microsoft che suggeriscono come strutturare una soluzione? Ho cercato qui: /programming/789389/project-structure-for-c-sharp-development-effort/789554?noredirect=1#comment86756309_789554 tra gli altri posti. La maggior parte degli articoli e delle domande che ho letto sembrano essere stati creati 2007-2009. Credo che Nuget sia stato introdotto nel 2010. Ci sono delle linee guida Microsoft? Ho letto di qualcosa chiamato Tree Surgeon, tuttavia questo non sembra più esistere: https://archive.codeplex.com/?p=treesurgeon .

Sto usando TFS; Cruise Control e DDD è ciò che fa la differenza.


4
Le strutture delle directory sono una questione di gusti. Usa la struttura delle cartelle che indica chiaramente le intenzioni del tuo progetto / organizzazione.
Robert Harvey,

5
Inoltre, la prossima volta che qualcuno ti dice che dovresti seguire le "Linee guida Microsoft" su qualcosa, chiedi a detta persona di fornirle o mostrarti dove puoi trovarle. Altrimenti, è un consiglio inutile.
Robert Harvey,

2
la cosa strana è mettere i pacchetti di nuget in lib anziché in pacchetti
Ewan

1
@Ewan, i pacchetti nuget non appartengono più a packagesnessuno, per progetti in stile dotnetcore e VS2017. Ora vivono nelle objdirectory dei progetti .
David Arno,

2
PFF! aggiornamento?!?!? sembra che potrebbe rompere le cose
Ewan

Risposte:


20

Su MSDN, ci sono alcune linee guida ufficiali molto vecchie . Questi però non sono aggiornati. Come dice la pagina, " Questo contenuto è obsoleto e non viene più mantenuto. Viene fornito come cortesia per le persone che stanno ancora utilizzando queste tecnologie. " Quindi ti consiglio di evitare queste linee guida.

Si è tentato di definire una struttura di soluzione comune tramite Project Scaffold . Questo è più orientato verso F #, piuttosto che C #. In realtà non è decollato e al giorno d'oggi c'è un piccolo segno di sviluppo delle idee.

Il set di linee guida più attivo e aggiornato è gestito da David Fowler, che è uno sviluppatore di Microsoft nel team ASP.NET. Queste linee guida sono utilizzate da molti all'interno di Microsoft, inclusi i team di Roslyn (il compilatore C # e VB.Net). Si potrebbe fare molto peggio che adottare questo approccio quindi.


Ho visto i primi due collegamenti, ma non il terzo. +1 per il terzo collegamento. Metterei il mio intero progetto Sandcastle nella cartella documenti o solo nei file della Guida generati dal progetto Sandcastle? Non sono sicuro del perché questa risposta sia stata sottoposta a downgrade.
w0051977,

1
Ad essere onesti, ogni pagina che non è inclusa nel nuovo sistema di documentazione di Microsoft è contrassegnata dalle parole "questo contenuto non è aggiornato e non viene più mantenuto". Ciò non significa che non ci siano alcune informazioni utili lì.
Robert Harvey,

Vuoi mettere le specifiche? Nella cartella Test o in una directory chiamata Specs (nella stessa directory della cartella src)? Immagino che non abbia molta importanza.
w0051977,

@RobertHarvey: Abbastanza giusto, ma fare riferimento a quella pagina da solo con nient'altro per il backup non è anche un motivo per cambiare la struttura delle cartelle del progetto se ne è già stata stabilita una diversa.
Flater

Puoi vedere le linee guida di David Fowlers in pratica nella maggior parte dei progetti open source su GitHub, ad esempio Enity Framework .
pfx,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.