This is a template repo that contains the default configuration for building and publishing a single NuGet package.
---
title: Personal GitHub Repo Structure
---
flowchart TB
subgraph subGH [" "]
gh(**.github**
repo)
noteGH[This contains core files
to be referenced by
or synced to other repos.]
end
subgraph subT [" "]
T1(**.template-<type>**
repo)
T2(**.template-<type>**
repo)
noteT[These define more specific
default files and structures
for different repo types.]
end
subgraph subR [" "]
R1(**<name>**
repo)
R2(**<name>**
repo)
R3(**<name>**
repo)
R4(**<name>**
repo)
noteR[These are the actual repos
where projects live.]
end
classDef current fill:#E68A39,color:#000000
class T1,T2 current
classDef sub opacity:0
class subGH,subT,subR sub
classDef note fill:#FFFFDD,color:#000000
class noteGH,noteT,noteR note
gh --> T1
gh --> T2
T1 --> R1
T1 --> R2
T2 --> R3
T2 --> R4
GitHub allows some community health and GitHub configuration files to only reside in the .github repo and automatically appear in all other repos. However, we can't take full advantage of that feature because most files need repo-specific customization.
| File | Exists only in .github repo |
Overridden in template repo |
Notes |
|---|---|---|---|
| π.github/ | |||
| Β ββπCODEOWNERS | N/A | β | |
| Β ββπFUNDING.yml | β | ||
| πCODE_OF_CONDUCT.md | β | Linked to by other files | |
| πCONTRIBUTING.md | β | Links to other files | |
| πGOVERNANCE.md | β | β | Not implemented |
| πLICENSE | N/A | β | |
| πSECURITY.md | β | Links to GitHub repo | |
| πSUPPORT.md | β | Links to other files |
| Template | Exists only in .github repo |
Overridden in template repo |
Description |
|---|---|---|---|
| π.github/ | |||
| Β ββπDISCUSSION_TEMPLATE/ | β | β | Not implemented |
| Β ββπISSUE_TEMPLATE/ | β | Contains GitHub Issue forms | |
| Β βΒ Β Β Β ββπconfig.yml | β | GitHub Issue template chooser | |
| Β ββπcodecov.yml | N/A | β | Codecov configuration |
| Β ββπcopilot-instructions.md | N/A | β | Copilot configuration |
| Β ββπdependabot.yml | N/A | β | Dependabot configuration |
| Β ββπpull_request_template.md | β | GitHub Pull Request template | |
| Β ββπsettings.yml | N/A | β | Repo configuration |
| Workflow | Description |
|---|---|
| π.github/ | |
| Β ββπworkflows/ | |
| Β Β Β Β Β Β Β ββπContinuous Integration | Builds, tests, and packs the solution. |
| Β Β Β Β Β Β Β ββπCreate Release | Creates draft Releases in GitHub |
| Β Β Β Β Β Β Β ββπPublish Packages | Publishes packages to GitHub Packages and NuGet.org |
| Β Β Β Β Β Β Β ββπTemplate Sync | Synchronizes files from a template repo to a derived repo |
| Β Β Β Β Β Β Β ββπValidate Codecov | Validates changes to codecov.yml |
| File | Description |
|---|---|
| π.config/ | Contains dotnet tool settings |
| π.vsconfig | Visual Studio settings |
| πglobal.json | .NET SDK settings |
| πnuget.config | NuGet settings |
| πStyleCop.json | StyleCop (code analysis) settings |
| File | Description |
|---|---|
| πsrc/ | Contains production code |
| Β ββπProduction.props | .NET project properties for production code |
| πtest/ | Contains test code |
| Β ββπ.editorconfig | Code analysis exceptions for test code |
| Β ββπTest.props | .NET project properties for test code |
| Β ββπTest.runsettings | .NET test run settings |
| πCommon.props | .NET project properties for all code |
| πIcon.png | NuGet package icon |
| πIcon.svg | NuGet package icon source |
| πPlaceholder.sln | Visual Studio solution |
| File | Description |
|---|---|
| πBuild.ps1 | Full build script (PowerShell) |
| πbuild.sh | Full build script (bash) |
| πTest.ps1 | Full build & test script (PowerShell) |
| πTest.sh | Full build & test script (bash) |
| File | Description |
|---|---|
| π.vscode/ | Contains VSCode settings |
| πdocs/ | Contains documentation |
| πtest/ | Contains test code |
| Β ββπTestHelpers.psm1 | Helper methods for Continuous Integration |
| π_checklist.md | New template repo checklist |
| π.editorconfig | Styleguide rule definitions |
| π.gitattributes | Built using scaffolding |
| π.gitignore | Built using scaffolding |
| π.gitmessage | Commit message template |
| πGenerateChangelog.ps1 | Script for generating the release changelog |
| πGitVersion.yml | GitVersion configuration |