Template
Introduces detailed instructions for ASP.NET API, C#, Docker, MSBuild, testing, and library creation. These guidelines aim to standardize development practices and improve code quality across the project.
2.2 KiB
2.2 KiB
name, description, argument-hint
| name | description | argument-hint |
|---|---|---|
| new-library | Scaffold a new reusable .NET library with correct naming, multi-targeting, and structure. Use when: creating a new library project, adding a reusable package, setting up a shared library under src/. | Brief description of the library purpose (e.g., "hashing utilities", "EF Core auditing") |
New Library
When to Use
- Creating a new reusable, packable library under
src/ - Adding a shared component meant for NuGet distribution
Naming Convention
Libraries use a {Domain}.{Feature} pattern. The Kritikos. root namespace prefix is applied automatically by Directory.Build.props.
| Domain prefix | When to use | Example |
|---|---|---|
AspNetCore.{Feature} |
Depends on Microsoft.AspNetCore.App |
AspNetCore.ProblemDetails |
Extensions.{Feature} |
Framework-agnostic, depends only on Microsoft.Extensions.* |
Extensions.Hashing |
EntityFrameworkCore.{Feature} |
Depends on EF Core | EntityFrameworkCore.Auditing |
| (no prefix) | Pure .NET with no framework dependency | Primitives |
Always propose 2–4 name options to the user and allow a custom choice.
Multi-Targeting
Target both current LTS versions plus optionally one STS version if newer than the latest LTS:
| Scenario | Targets | Rationale |
|---|---|---|
| .NET 10 is current LTS | net8.0;net10.0 |
Skip .NET 9 (STS, superseded) |
| .NET 11 (STS) ships | net8.0;net10.0;net11.0 |
11 > 10, include it |
| .NET 12 (LTS) ships | net10.0;net12.0 |
.NET 8 drops; 11 superseded |
Libraries with no framework dependency (no domain prefix) should also target netstandard2.0/netstandard2.1 when APIs and dependencies allow. Framework-dependent libraries skip .NET Standard.
Procedure
- Ask the user for the library's purpose.
- Propose name options using the naming table above.
- Determine the correct multi-targeting based on current LTS/STS and framework dependencies.
- Create the project under
src/{LibraryName}/. - Do not specify
VersiononPackageReference— add versions inDirectory.Packages.props. - Create a matching test project under
tests/{LibraryName}.Tests/. - Add both projects to
Solution.slnx. - Verify the build compiles cleanly.