myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Knowledge Base » FAQ » [FAQ] Ordnerstruktur für .NET Projekte
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[FAQ] Ordnerstruktur für .NET Projekte

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.447
Herkunft: BW


Abt ist offline

[FAQ] Ordnerstruktur für .NET Projekte

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ordnerstruktur für .NET Projekte

Dieser Artikel behandelt den grundlegenden, empfohlenen Aufbau der Ordnerstukturen von .NET Anwendungen.

In den seltensten Fällen besteht eine Anwendung oder eine Bibliothek einzig und alleine aus einem einzigen C# Projekt; sondern im Endeffekt aus mehreren Projekten.
Daher behandelt dieser Artikel auch den am meisten vorhanden Fall, dass mehrere Projekte in einer Solution zusammen gefasst werden.

Microsoft selbst gibt keine konkreten Vorgaben an, wie entsprechende Ordnerstrukturen auszusehen haben, sondern verweisen auf den "üblichen Umgang" mit Namespaces und der entsprechenden Trennung von Quellcode hinweg über mehrere Visual Studio Projekte.
Die Inhalte beziehen sich dahingehend auf weit verbreitete Open Source Commitments sowie Best Practises als Orientierungshilfe.

Die empfohlene Ordnerstruktur

$/
  artifacts/       Ordner für den Build-Output (optional)
  build/           Build Scripts
  docs/            Dokumentationen (meist Markdown-Dateien) (optional)
  lib/             Assemblies, die **nicht** in NuGet-Paketen verteilt werden können
  packages/        NuGet-Pakete (optional, da diese normalerweise nicht im Projekt selbst abgelegt werden, sondern von einem NuGet Feed kommen)
  samples/         Beispiel-Projekte
  src/             Produkt Quellcode, hier befinden sich die csproj-Dateien der C# Projekte
  tests/           Quellcode für Tests Projekte
  wiki/            Wiki als optionale Alternative für docs/
  .editorconfig    Code Style Definitions
  .gitignore
  .gitattributes
  build.cmd        Build-Script unter Windows (optional)
  build.sh         Build-Script unter *Unix (optional)
  global.json       
  LICENSE
  NuGet.Config   
  README.md
  {solution}.sln

Warum diese Struktur?

Wie jedes Muster, hat sich auch diese Struktur mit der Zeit und durch unzählige Projekte sowie Quellen als vorteilhaft herauskristallisiert und gilt seit David Fowlers (ein Architekt von Microsoft für u.a. ASP.NET) Gist  .NET project structure, indem diese Struktur vermutlich erstmals niedergeschrieben wurde, als de-facto Standard.
In den Kommentaren zu diesem Gist sammelte er eine Menge an Feedback sowie Best Practises und hat dabei auch andere Ökosysteme wie JavaScript, TypeScript und Java einfliessen lassen.
Sie garantiert, dass alle notwendigen Inhalte innerhalb dieser Struktur existieren und es keine weiteren Referenzen auf irgendwelche übergeordneten Ordner (zB. Assembly-Verweise) notwendig sind.

Der Aufbau ist sehr allgemein und deckt verschiedene Anforderungen ab, die prinzipiell nicht in jedem Umfeld vorhanden sein müssen; werden beispielsweise keine Beispiele/Samples bereitgestellt, dann existiert entsprechend auch der samples-Ordner nicht bzw. kann dieser weggelassen werden. Einheitliche Projektstrukturen sind v.a. in der Open-Source Umgebung sehr vorteilhaft, da sich ein potentieller Contributor schnell im Projekt zurechtfindet und sich nicht erst durch die Projekt-Organisation wühlen muss.
Wie bei jedem Muster muss die Struktur daher nicht 1:1 übernommen werden, sondern bildet die Grundlage und einen Anhaltspunkt für einen invidiuellen Aufbau.

Ein weiterer Vorteil dieser Struktur ist, dass viele Tools (ob bewusst oder unbewusst) in der .NET Welt abgestimmt sind / passen, zum Beispiel die .NET CLI.


------------------------------------
Entstanden zusammen mit gfoidl.

Historie:
2021-01-02: Veröffentlichung
02.01.2021 22:26 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2021 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.01.2021 22:42