From 37b10b44328436b3627c5ab8c5442470535c0cc3 Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Sun, 3 May 2026 08:22:42 -0700 Subject: [PATCH] Rename Library project to NuGetLibrary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disambiguate the .NET project name in preparation for adding a sibling Python PyPi project. The folder, csproj filename, RootNamespace, and namespace declarations move from `Library` to `NuGetLibrary`. The companion GitHub Actions reusable workflow `build-library-task.yml` is renamed to `build-nugetlibrary-task.yml` for the same reason; the artifact name and zip filename track the rename. The published NuGet package id is intentionally preserved as `ptr727.ProjectTemplate.Library` via an explicit `` element so existing consumers and the README NuGet badges continue to work without a new package or a 404 on the existing nuget.org URL. Class names `TemplateLibrary` and `StaticTemplateLibrary` are left alone — they describe the type, not the project, and are referenced by tests and benchmarks. dotnet build: 0 warnings, 0 errors. dotnet test: 15 passed, 0 failed. dotnet pack: produces ptr727.ProjectTemplate.Library.1.0.0-pre.nupkg as expected. --- .github/copilot-instructions.md | 12 +++++------ ...y-task.yml => build-nugetlibrary-task.yml} | 20 +++++++++---------- .github/workflows/build-release-task.yml | 12 +++++------ AGENTS.md | 2 +- Benchmarks/Benchmarks.csproj | 2 +- Console/Console.csproj | 2 +- Console/Program.cs | 2 +- {Library => NuGetLibrary}/.editorconfig | 0 {Library => NuGetLibrary}/Extensions.cs | 2 +- {Library => NuGetLibrary}/GlobalUsings.cs | 0 {Library => NuGetLibrary}/Library.cs | 2 +- {Library => NuGetLibrary}/LogOptions.cs | 2 +- .../NuGetLibrary.csproj | 2 +- {Library => NuGetLibrary}/Options.cs | 2 +- ProjectTemplate.code-workspace | 1 + ProjectTemplate.slnx | 10 +++++----- Tests/LoggingTests.cs | 2 +- Tests/Tests.csproj | 2 +- 18 files changed, 39 insertions(+), 38 deletions(-) rename .github/workflows/{build-library-task.yml => build-nugetlibrary-task.yml} (75%) rename {Library => NuGetLibrary}/.editorconfig (100%) rename {Library => NuGetLibrary}/Extensions.cs (92%) rename {Library => NuGetLibrary}/GlobalUsings.cs (100%) rename {Library => NuGetLibrary}/Library.cs (92%) rename {Library => NuGetLibrary}/LogOptions.cs (96%) rename Library/Library.csproj => NuGetLibrary/NuGetLibrary.csproj (94%) rename {Library => NuGetLibrary}/Options.cs (85%) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index f61f6468..aa7fab8c 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -4,7 +4,7 @@ **ProjectTemplate** is a C# .NET template project that demonstrates best practices for C# .NET development. The project includes: -- **Library**: Core library with AOT compatibility (`Library.csproj`) +- **NuGetLibrary**: Core .NET NuGet library with AOT compatibility (`NuGetLibrary.csproj`, published as `ptr727.ProjectTemplate.Library`) - **Console**: Command-line application using System.CommandLine (`Console.csproj`) - **Tests**: Unit tests using xUnit and AwesomeAssertions (`Tests.csproj`) - **Benchmarks**: Performance benchmarks using BenchmarkDotNet (`Benchmarks.csproj`) @@ -43,7 +43,7 @@ Available VS Code tasks (use via `run_task` tool): 1. **File-Scoped Namespaces**: Always use file-scoped namespaces ```csharp - namespace ptr727.ProjectTemplate.Library; + namespace ptr727.ProjectTemplate.NuGetLibrary; ``` 2. **Nullable Reference Types**: Enabled (`enable`) @@ -92,7 +92,7 @@ Available VS Code tasks (use via `run_task` tool): ``` 4. **Namespace**: Follow format `ptr727.ProjectTemplate.` - - Library: `ptr727.ProjectTemplate.Library` + - NuGetLibrary: `ptr727.ProjectTemplate.NuGetLibrary` - Console: `ptr727.ProjectTemplate.Console` - Tests: `ptr727.ProjectTemplate.Tests` @@ -110,7 +110,7 @@ Available VS Code tasks (use via `run_task` tool): ```csharp using System.CommandLine; using System.Runtime.CompilerServices; - using ptr727.ProjectTemplate.Library; + using ptr727.ProjectTemplate.NuGetLibrary; namespace ptr727.ProjectTemplate.Console; ``` @@ -211,7 +211,7 @@ Available VS Code tasks (use via `run_task` tool): 1. **Target Framework**: .NET 10.0 (`net10.0`) -2. **AOT Compatibility**: Library is AOT compatible +2. **AOT Compatibility**: NuGetLibrary is AOT compatible - `true` - `true` @@ -292,7 +292,7 @@ Available VS Code tasks (use via `run_task` tool): - `CodeGen/` - Code generation utilities (internal tooling) - `Console/` - Console/CLI application using System.CommandLine - `Docker/` - Docker build scripts and Dockerfile -- `Library/` - Core reusable library +- `NuGetLibrary/` - Core reusable .NET NuGet library (published as `ptr727.ProjectTemplate.Library`) - `Tests/` - Unit tests using xUnit and AwesomeAssertions ## Best Practices diff --git a/.github/workflows/build-library-task.yml b/.github/workflows/build-nugetlibrary-task.yml similarity index 75% rename from .github/workflows/build-library-task.yml rename to .github/workflows/build-nugetlibrary-task.yml index 6bd1279b..0a5de77f 100644 --- a/.github/workflows/build-library-task.yml +++ b/.github/workflows/build-nugetlibrary-task.yml @@ -1,9 +1,9 @@ -name: Build library task +name: Build NuGet library task on: workflow_call: inputs: - # Input to control whether to push the library to NuGet.org + # Input to control whether to push the NuGet library to NuGet.org push: required: false type: boolean @@ -11,7 +11,7 @@ on: outputs: # Output of the uploaded artifact id artifact-id: - value: ${{ jobs.build-library.outputs.artifact-id }} + value: ${{ jobs.build-nugetlibrary.outputs.artifact-id }} jobs: @@ -20,8 +20,8 @@ jobs: uses: ./.github/workflows/get-version-task.yml secrets: inherit - build-library: - name: Build library project job + build-nugetlibrary: + name: Build NuGet library project job runs-on: ubuntu-latest outputs: artifact-id: ${{ steps.artifact-upload-step.outputs.artifact-id }} @@ -37,9 +37,9 @@ jobs: - name: Checkout code step uses: actions/checkout@v6 - - name: Build library project step + - name: Build NuGet library project step run: | - dotnet build ./Library/Library.csproj \ + dotnet build ./NuGetLibrary/NuGetLibrary.csproj \ -property:OutputPath=${{ runner.temp }}/publish/ \ -property:PackageOutputPath=${{ runner.temp }}/publish/ \ --configuration ${{ github.ref_name == 'main' && 'Release' || 'Debug' }} \ @@ -58,11 +58,11 @@ jobs: --skip-duplicate - name: Zip output step - run: 7z a -t7z ${{ runner.temp }}/Library.7z ${{ runner.temp }}/publish/* + run: 7z a -t7z ${{ runner.temp }}/NuGetLibrary.7z ${{ runner.temp }}/publish/* - name: Upload build artifacts step id: artifact-upload-step uses: actions/upload-artifact@v6 with: - name: library-build - path: ${{ runner.temp }}/Library.7z + name: nugetlibrary-build + path: ${{ runner.temp }}/NuGetLibrary.7z diff --git a/.github/workflows/build-release-task.yml b/.github/workflows/build-release-task.yml index 20130c2c..4bccfdff 100644 --- a/.github/workflows/build-release-task.yml +++ b/.github/workflows/build-release-task.yml @@ -26,9 +26,9 @@ jobs: uses: ./.github/workflows/get-version-task.yml secrets: inherit - build-library: - name: Build library job - uses: ./.github/workflows/build-library-task.yml + build-nugetlibrary: + name: Build NuGet library job + uses: ./.github/workflows/build-nugetlibrary-task.yml secrets: inherit with: # Conditional push to NuGet.org @@ -51,17 +51,17 @@ jobs: name: Publish GitHub release job if: ${{ inputs.github }} runs-on: ubuntu-latest - needs: [get-version, build-library, build-executable, build-docker] + needs: [get-version, build-nugetlibrary, build-executable, build-docker] steps: - name: Checkout code step uses: actions/checkout@v6 - - name: Download library build artifacts job + - name: Download NuGet library build artifacts job uses: actions/download-artifact@v7 with: - artifact-ids: ${{ needs.build-library.outputs.artifact-id }} + artifact-ids: ${{ needs.build-nugetlibrary.outputs.artifact-id }} path: ./Publish - name: Download executable build artifacts job diff --git a/AGENTS.md b/AGENTS.md index ac3a0281..62c4cc23 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -42,7 +42,7 @@ For comprehensive coding standards and detailed conventions, refer to [`.github/ ### Project Structure -- **Library**: Core reusable library +- **NuGetLibrary**: Core reusable .NET NuGet library (published as `ptr727.ProjectTemplate.Library`) - **Console**: CLI application using System.CommandLine - **Tests**: xUnit with AwesomeAssertions (Arrange-Act-Assert pattern) - **Benchmarks**: BenchmarkDotNet performance measurements diff --git a/Benchmarks/Benchmarks.csproj b/Benchmarks/Benchmarks.csproj index ab6aa801..fbf90517 100644 --- a/Benchmarks/Benchmarks.csproj +++ b/Benchmarks/Benchmarks.csproj @@ -7,6 +7,6 @@ - + diff --git a/Console/Console.csproj b/Console/Console.csproj index bc4ea6ae..ae14c9a1 100644 --- a/Console/Console.csproj +++ b/Console/Console.csproj @@ -21,6 +21,6 @@ - + diff --git a/Console/Program.cs b/Console/Program.cs index 45752492..5df60863 100644 --- a/Console/Program.cs +++ b/Console/Program.cs @@ -1,4 +1,4 @@ -using ptr727.ProjectTemplate.Library; +using ptr727.ProjectTemplate.NuGetLibrary; namespace ptr727.ProjectTemplate.Console; diff --git a/Library/.editorconfig b/NuGetLibrary/.editorconfig similarity index 100% rename from Library/.editorconfig rename to NuGetLibrary/.editorconfig diff --git a/Library/Extensions.cs b/NuGetLibrary/Extensions.cs similarity index 92% rename from Library/Extensions.cs rename to NuGetLibrary/Extensions.cs index 59709850..bdf0e4cd 100644 --- a/Library/Extensions.cs +++ b/NuGetLibrary/Extensions.cs @@ -1,6 +1,6 @@ using System.Runtime.CompilerServices; -namespace ptr727.ProjectTemplate.Library; +namespace ptr727.ProjectTemplate.NuGetLibrary; internal static partial class LogExtensions { diff --git a/Library/GlobalUsings.cs b/NuGetLibrary/GlobalUsings.cs similarity index 100% rename from Library/GlobalUsings.cs rename to NuGetLibrary/GlobalUsings.cs diff --git a/Library/Library.cs b/NuGetLibrary/Library.cs similarity index 92% rename from Library/Library.cs rename to NuGetLibrary/Library.cs index 1f661bc7..b3cedf4f 100644 --- a/Library/Library.cs +++ b/NuGetLibrary/Library.cs @@ -1,4 +1,4 @@ -namespace ptr727.ProjectTemplate.Library; +namespace ptr727.ProjectTemplate.NuGetLibrary; /// /// Provides the primary library functionality. diff --git a/Library/LogOptions.cs b/NuGetLibrary/LogOptions.cs similarity index 96% rename from Library/LogOptions.cs rename to NuGetLibrary/LogOptions.cs index 9c63601c..382fc04a 100644 --- a/Library/LogOptions.cs +++ b/NuGetLibrary/LogOptions.cs @@ -1,4 +1,4 @@ -namespace ptr727.ProjectTemplate.Library; +namespace ptr727.ProjectTemplate.NuGetLibrary; /// /// Provides global logging configuration for the library. diff --git a/Library/Library.csproj b/NuGetLibrary/NuGetLibrary.csproj similarity index 94% rename from Library/Library.csproj rename to NuGetLibrary/NuGetLibrary.csproj index 6736346e..f08d6fd9 100644 --- a/Library/Library.csproj +++ b/NuGetLibrary/NuGetLibrary.csproj @@ -21,7 +21,7 @@ 1.0.0-pre true https://github.com/ptr727/ProjectTemplate - ptr727.ProjectTemplate.Library + ptr727.ProjectTemplate.NuGetLibrary snupkg 1.0.0.0 diff --git a/Library/Options.cs b/NuGetLibrary/Options.cs similarity index 85% rename from Library/Options.cs rename to NuGetLibrary/Options.cs index cef2b103..04d51a70 100644 --- a/Library/Options.cs +++ b/NuGetLibrary/Options.cs @@ -1,4 +1,4 @@ -namespace ptr727.ProjectTemplate.Library; +namespace ptr727.ProjectTemplate.NuGetLibrary; /// /// Options used to configure the library. diff --git a/ProjectTemplate.code-workspace b/ProjectTemplate.code-workspace index 0ad06819..b8714f6a 100644 --- a/ProjectTemplate.code-workspace +++ b/ProjectTemplate.code-workspace @@ -32,6 +32,7 @@ "logfile", "nameof", "nbgv", + "nugetlibrary", "nektos", "Nerdbank", "noninteractive", diff --git a/ProjectTemplate.slnx b/ProjectTemplate.slnx index c8e900d4..7e3cc9c6 100644 --- a/ProjectTemplate.slnx +++ b/ProjectTemplate.slnx @@ -3,7 +3,7 @@ - + @@ -24,14 +24,14 @@ - + - + - + - + diff --git a/Tests/LoggingTests.cs b/Tests/LoggingTests.cs index 9f43dca7..2d8f8a65 100644 --- a/Tests/LoggingTests.cs +++ b/Tests/LoggingTests.cs @@ -1,6 +1,6 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; -using ptr727.ProjectTemplate.Library; +using ptr727.ProjectTemplate.NuGetLibrary; namespace ptr727.ProjectTemplate.Tests; diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj index 8c53010d..6cf10d59 100644 --- a/Tests/Tests.csproj +++ b/Tests/Tests.csproj @@ -14,6 +14,6 @@ - +