Skip to content
This repository has been archived by the owner on May 31, 2024. It is now read-only.

Commit

Permalink
complete service-repo doc
Browse files Browse the repository at this point in the history
  • Loading branch information
kurmann committed Apr 26, 2024
1 parent c96e8f4 commit f66fd49
Showing 1 changed file with 89 additions and 0 deletions.
89 changes: 89 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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<IhrProjektNameSettings>(configuration.GetSection(IhrProjektNameSettings.SectionName));

// Dienste hinzufügen
services.AddHostedService<SampleHostedService>();

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`
Expand Down

0 comments on commit f66fd49

Please sign in to comment.