From c96e8f4dbb618a45754002b06544370e6a82fd59 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Fri, 26 Apr 2024 09:34:46 +0200 Subject: [PATCH 1/2] shortened template readme --- templates/entities-repo/README.md | 2 +- templates/services-repo/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/entities-repo/README.md b/templates/entities-repo/README.md index 5db0a0e..7aa3cc5 100644 --- a/templates/entities-repo/README.md +++ b/templates/entities-repo/README.md @@ -6,7 +6,7 @@ ProjectDescription ## Mitwirken -Derzeit entwickle ich das Projekt im Alleingang. Als dreifacher Familienvater bin ich für jede Unterstützung und Weiterentwicklungen dankbar. Bitte erstellen Sie ein GitHub-Issue als Anfrage. +Derzeit entwickle ich das Projekt im Alleingang. Unterstützung ist willkommen. Bitte erstellen Sie ein GitHub-Issue als Anfrage. ## Lizenz diff --git a/templates/services-repo/README.md b/templates/services-repo/README.md index 5db0a0e..7aa3cc5 100644 --- a/templates/services-repo/README.md +++ b/templates/services-repo/README.md @@ -6,7 +6,7 @@ ProjectDescription ## Mitwirken -Derzeit entwickle ich das Projekt im Alleingang. Als dreifacher Familienvater bin ich für jede Unterstützung und Weiterentwicklungen dankbar. Bitte erstellen Sie ein GitHub-Issue als Anfrage. +Derzeit entwickle ich das Projekt im Alleingang. Unterstützung ist willkommen. Bitte erstellen Sie ein GitHub-Issue als Anfrage. ## Lizenz From f66fd49f709be22ba4cb296dc36a771b47f43978 Mon Sep 17 00:00:00 2001 From: Patrick Kurmann Date: Fri, 26 Apr 2024 09:55:19 +0200 Subject: [PATCH 2/2] complete service-repo doc --- README.md | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/README.md b/README.md index 70281e8..dd3fa3a 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,95 @@ dotnet new nuget-classlib -n MeinNugetPaket -o src dotnet new nuget-classlib-workflow ``` +### Services GitHub Repository Template + +Dieses Template automatisiert die Erstellung eines vollständigen GitHub-Repositories für ein ServiceCollection, die mit dem IServiceCollection-Interface eingebunden werden kann. Es integriert VSCode Debug Einstellungen und enthält die vollständigen Workflows aus dem Repository "kurmann/GitHub.Workflows". + +#### Verwendung + +```bash +dotnet new service-repo -n IhrProjektName --namespace IhrRootNamespace --description "Kurze Beschreibung Ihres Projekts" +``` + +Die Verzeichnisstruktur Ihres neuen Repositorys sieht wie folgt aus: + +```text +IhrProjektName/ +├── .devcontainer/ +│ └── devcontainer.json +├── .github/ +│ ├── release-drafter-config.yml +│ └── workflows/ +│ ├── draft_release.yml +│ ├── publish_package.yml +├── .vscode/ +│ ├── launch.json +│ └── tasks.json +├── src/ +│ ├── Application/ +│ │ ├── Program.cs +│ │ └── Application.csproj +│ └── Services/ +│ ├── Commands/ +│ │ ├── ICommand.cs +│ │ └── SampleModule.cs +│ ├── Queries/ +│ │ ├── IQueryService.cs +│ │ └── SampleQuery.cs +│ └── Services/ +│ ├── SampleHostedService.cs +│ └── ServiceCollection.cs +├── .gitignore +├── LICENSE +├── PackageIcon.png +├── README.md +└── IhrProjektName.sln +``` + +Diese Struktur unterstützt Sie bei der Entwicklung einer .NET Service Library und bereitet alles vor für Continuous Integration und NuGet Package Publishing. + +#### Besonderheiten des Templates + +- **VSCode Debug-Einstellungen**: Mit `launch.json` und `tasks.json` für eine optimierte Debugging-Erfahrung direkt in VSCode. +- **GitHub Workflows**: Automatisiert den Release-Prozess mit `draft_release.yml`, `publish_package.yml` und `release-drafter-config.yml`, übernommen aus dem Repository "kurmann/GitHub.Workflows". +- **Erweiterbare Service-Konfiguration**: Die `ServiceCollectionExtensions` ermöglicht es, Services und Konfigurationen modular zu Ihrem .NET-Projekt hinzuzufügen. + +```csharp +// ServiceCollection.cs + +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Configuration; +using IhrRootNamespace.IhrProjektName.Services; + +namespace IhrRootNamespace.IhrProjektName; + +public static class ServiceCollectionExtensions +{ + public static IServiceCollection AddIhrProjektName( + this IServiceCollection services, + IConfiguration configuration) + { + // Bindet Root-Konfigurationswerte an IhrProjektNameSettings + services.Configure(configuration.GetSection(IhrProjektNameSettings.SectionName)); + + // Dienste hinzufügen + services.AddHostedService(); + + return services; + } +} +``` + +Inklusive einer `README.md`-Vorlage, die Sie mit Anweisungen für die Verwendung des Templates und Informationen zur Repository-Struktur versorgt. Die enthaltene Lizenzdatei und die Vorlage für das Paket-Icon stellen sicher, dass Ihr Repository von Anfang an professionell wirkt. + +#### Integration in bestehende Projekte + +Um die Services in einem bestehenden Projekt zu nutzen, fügen Sie die `AddIhrProjektName`-Methode zur Konfiguration Ihrer `IServiceCollection` hinzu. Dies ermöglicht es Ihnen, die Dienste und Einstellungen, die durch das Template bereitgestellt werden, einfach zu integrieren und zu verwenden. + +#### Schlussfolgerung + +Das `Services GitHub Repository Template` ist ein mächtiges Werkzeug, um ein standardisiertes, sofort einsatzbereites Service-Repository aufzusetzen. Es spart Zeit und sorgt dafür, dass Best Practices von Anfang an eingehalten werden. Durch die Vorstrukturierung und die mitgelieferten Workflows für GitHub Actions kann der Entwicklungs- und Veröffentlichungsprozess erheblich beschleunigt und vereinfacht werden. + ### Template: .NET Gitignore - **Kurzname:** `dotnet-gitignore`