Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .docfx/Dockerfile.docfx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARG NGINX_VERSION=1.29.1-alpine
ARG NGINX_VERSION=1.29.3-alpine

FROM --platform=$BUILDPLATFORM nginx:${NGINX_VERSION} AS base
RUN rm -rf /usr/share/nginx/html/*
Expand Down
2 changes: 1 addition & 1 deletion .docfx/docfx.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"dest": "api",
"filter": "filterConfig.yml",
"properties": {
"TargetFramework": "net9.0"
"TargetFramework": "net10.0"
}
}
],
Expand Down
2 changes: 1 addition & 1 deletion .docfx/includes/availability-default.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Availability: .NET 9, .NET 8 and .NET Standard 2.0
Availability: .NET 10, .NET 9 and .NET Standard 2.0
2 changes: 1 addition & 1 deletion .docfx/includes/availability-modern.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Availability: .NET 9 and .NET 8
Availability: .NET 10 and .NET 9
13 changes: 7 additions & 6 deletions .github/workflows/pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
strategy:
matrix:
configuration: [Debug, Release]
uses: codebeltnet/jobs-dotnet-build/.github/workflows/default.yml@v2
uses: codebeltnet/jobs-dotnet-build/.github/workflows/default.yml@v3
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify GitHub Actions version compatibility with .NET 10.

The workflow upgrades multiple codebeltnet actions from v2/v1 to v3/v2. While the pattern is consistent with the PR objectives (build/pack/test/SonarCloud to v3), confirm that these action versions exist and have been tested with .NET 10 and xUnit v3 (the new test framework).

Also applies to: 45-45, 58-58, 71-71, 89-89


🏁 Script executed:

#!/bin/bash
# Verify that the referenced codebeltnet actions exist and can be resolved
actions=(
  "codebeltnet/jobs-dotnet-build@v3"
  "codebeltnet/jobs-dotnet-pack@v3"
  "codebeltnet/jobs-dotnet-test@v3"
  "codebeltnet/jobs-sonarcloud@v3"
  "codebeltnet/jobs-codeql@v3"
)

for action in "${actions[@]}"; do
  repo=$(echo "$action" | cut -d'@' -f1)
  version=$(echo "$action" | cut -d'@' -f2)
  echo "Checking: $repo at $version"
  gh api repos/"$repo"/releases/tags/"$version" --jq '.tag_name, .published_at' 2>/dev/null || echo "  ⚠️  Could not verify $version"
done

Length of output: 1014


Based on the verification results, the script definitively shows that all five codebeltnet action v3 tags return GitHub API 404 errors, meaning these tags cannot be resolved. This is a critical issue that will cause workflow failures.

All referenced codebeltnet action v3 tags cannot be resolved via GitHub API (404 errors).

Lines 30, 45, 58, 71, 89 reference:

  • codebeltnet/jobs-dotnet-build@v3
  • codebeltnet/jobs-dotnet-pack@v3
  • codebeltnet/jobs-dotnet-test@v3
  • codebeltnet/jobs-sonarcloud@v3
  • codebeltnet/jobs-codeql@v3

All returned 404 "Not Found" when queried via GitHub API. Either these tags don't exist, the repositories are inaccessible, or there's a critical configuration issue. This will cause the workflow to fail when GitHub attempts to resolve these action references. Verify that these versions have been released and are publicly accessible.

🤖 Prompt for AI Agents
In .github/workflows/pipelines.yml (around lines 30, 45, 58, 71 and 89) the
referenced composite actions use codebeltnet/*@v3 tags which return GitHub API
404s and cannot be resolved; replace each broken reference with a resolvable
ref: either update to the correct released tag name, a specific released semver
tag (e.g., vX.Y.Z), or pin to a commit SHA (owner/repo@<sha>) for each of
codebeltnet/jobs-dotnet-build, jobs-dotnet-pack, jobs-dotnet-test,
jobs-sonarcloud and jobs-codeql; confirm the target repository and tag exist and
are public (or grant access), run the GitHub API check to verify resolution, and
update the workflow refs accordingly so the actions resolve without 404s.

with:
projects: src/**/*.csproj
configuration: ${{ matrix.configuration }}
Expand All @@ -42,7 +42,7 @@ jobs:
strategy:
matrix:
configuration: [Debug, Release]
uses: codebeltnet/jobs-dotnet-pack/.github/workflows/default.yml@v2
uses: codebeltnet/jobs-dotnet-pack/.github/workflows/default.yml@v3
with:
configuration: ${{ matrix.configuration }}
version: ${{ needs.build.outputs.version }}
Expand All @@ -55,19 +55,20 @@ jobs:
matrix:
os: [ubuntu-24.04, windows-2022]
configuration: [Debug, Release]
uses: codebeltnet/jobs-dotnet-test/.github/workflows/default.yml@v2
uses: codebeltnet/jobs-dotnet-test/.github/workflows/default.yml@v3
with:
projects: test/**/*.csproj
configuration: ${{ matrix.configuration }}
runs-on: ${{ matrix.os }}
verbosity-level: normal
build-switches: -p:SkipSignAssembly=true
restore: true
build: true

sonarcloud:
name: call-sonarcloud
needs: [build,test]
uses: codebeltnet/jobs-sonarcloud/.github/workflows/default.yml@v2
uses: codebeltnet/jobs-sonarcloud/.github/workflows/default.yml@v3
with:
organization: geekle
projectKey: bootstrapper
Expand All @@ -85,15 +86,15 @@ jobs:
codeql:
name: call-codeql
needs: [build,test]
uses: codebeltnet/jobs-codeql/.github/workflows/default.yml@v2
uses: codebeltnet/jobs-codeql/.github/workflows/default.yml@v3
permissions:
security-events: write

deploy:
if: github.event_name != 'pull_request'
name: call-nuget
needs: [build, pack, test, sonarcloud, codecov, codeql]
uses: codebeltnet/jobs-nuget-push/.github/workflows/default.yml@v1
uses: codebeltnet/jobs-nuget-push/.github/workflows/default.yml@v2
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow versions have been updated from v2 to v3, but the jobs-nuget-push workflow has been updated from v1 to v2. Please verify that all these workflow versions exist and are compatible with .NET 10. Additionally, ensure that the referenced workflows support the new target frameworks and testing infrastructure (xUnit v3 with Microsoft Testing Platform).

Suggested change
uses: codebeltnet/jobs-nuget-push/.github/workflows/default.yml@v2
uses: codebeltnet/jobs-nuget-push/.github/workflows/default.yml@v3

Copilot uses AI. Check for mistakes.
with:
version: ${{ needs.build.outputs.version }}
environment: Production
Expand Down
10 changes: 9 additions & 1 deletion .nuget/Codebelt.Bootstrapper.Console/PackageReleaseNotes.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
Version 4.0.6
Version 5.0.0
Availability: .NET 10 and .NET 9

# ALM
- ADDED Support for TFM .NET 10 (LTS)
- REMOVED Support for TFM .NET 8 (LTS)
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)

Version 4.0.6
Availability: .NET 9 and .NET 8

# ALM
Expand Down
2 changes: 2 additions & 0 deletions .nuget/Codebelt.Bootstrapper.Console/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ An open-source family of assemblies (MIT license) that provide a uniform and con

Also, common for all, is the implementation of the `IHostedService` interface; this means that all project types, including the traditional `console`, now have option for graceful shutdown should your application require this (cronjob scenarios or similar).

Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.

Comment on lines +7 to +8
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Standardize version ordering: list newest version first.

Same issue as in the Worker README. The version order should list .NET 10 before .NET 9 to match the availability documentation and follow the convention of listing the newest version first.

Apply this diff:

-Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.
+Your versatile Bootstrapper companion for modern development with `.NET 10` and `.NET 9`.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.
Your versatile Bootstrapper companion for modern development with `.NET 10` and `.NET 9`.
🤖 Prompt for AI Agents
In .nuget/Codebelt.Bootstrapper.Console/README.md around lines 7 to 8, the
version ordering lists `.NET 9` before `.NET 10`; update the sentence to list
the newest version first by swapping the order so it reads `.NET 10` and `.NET
9` (or otherwise place `.NET 10` before `.NET 9`) to match the project's
convention and availability docs.

It is, by heart, free, flexible and built to extend and boost your agile codebelt.

## Codebelt.Bootstrapper.Console
Expand Down
10 changes: 9 additions & 1 deletion .nuget/Codebelt.Bootstrapper.Web/PackageReleaseNotes.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
Version 4.0.6
Version 5.0.0
Availability: .NET 10 and .NET 9

# ALM
- ADDED Support for TFM .NET 10 (LTS)
- REMOVED Support for TFM .NET 8 (LTS)
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)

Version 4.0.6
Availability: .NET 9 and .NET 8

# ALM
Expand Down
2 changes: 2 additions & 0 deletions .nuget/Codebelt.Bootstrapper.Web/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ An open-source family of assemblies (MIT license) that provide a uniform and con

Also, common for all, is the implementation of the `IHostedService` interface; this means that all project types, including the traditional `console`, now have option for graceful shutdown should your application require this (cronjob scenarios or similar).

Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.

Comment on lines +7 to +8
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Standardize version ordering: list newest version first.

The version order should list .NET 10 before .NET 9 to match the availability documentation files and follow standard convention.

Apply this diff:

-Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.
+Your versatile Bootstrapper companion for modern development with `.NET 10` and `.NET 9`.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.
Your versatile Bootstrapper companion for modern development with `.NET 10` and `.NET 9`.
🤖 Prompt for AI Agents
In .nuget/Codebelt.Bootstrapper.Web/README.md around lines 7 to 8, the version
ordering lists `.NET 9` before `.NET 10`; update the sentence to list `.NET 10`
first (e.g., "`.NET 10` and `.NET 9`") so the newest version appears before the
older one to match documentation conventions.

It is, by heart, free, flexible and built to extend and boost your agile codebelt.

## Codebelt.Bootstrapper.Web
Expand Down
10 changes: 9 additions & 1 deletion .nuget/Codebelt.Bootstrapper.Worker/PackageReleaseNotes.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
Version 4.0.6
Version 5.0.0
Availability: .NET 10 and .NET 9

# ALM
- ADDED Support for TFM .NET 10 (LTS)
- REMOVED Support for TFM .NET 8 (LTS)
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)

Version 4.0.6
Availability: .NET 9 and .NET 8

# ALM
Expand Down
2 changes: 2 additions & 0 deletions .nuget/Codebelt.Bootstrapper.Worker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ An open-source family of assemblies (MIT license) that provide a uniform and con

Also, common for all, is the implementation of the `IHostedService` interface; this means that all project types, including the traditional `console`, now have option for graceful shutdown should your application require this (cronjob scenarios or similar).

Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.

Comment on lines +7 to +8
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Standardize version ordering: list newest version first.

The version order here lists .NET 9 before .NET 10, but the availability documentation files (.docfx/includes/availability-modern.md and .docfx/includes/availability-default.md) list .NET 10 first. For consistency and to follow the convention of listing the newest version first, this should read: .NET 10 and .NET 9.

Apply this diff to standardize the version order:

-Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.
+Your versatile Bootstrapper companion for modern development with `.NET 10` and `.NET 9`.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.
Your versatile Bootstrapper companion for modern development with `.NET 10` and `.NET 9`.
🤖 Prompt for AI Agents
In .nuget/Codebelt.Bootstrapper.Worker/README.md around lines 7 to 8, the .NET
versions are listed as ".NET 9 and .NET 10" but should list the newest first;
update the text to read ".NET 10 and .NET 9" to match the availability docs and
standardize ordering.

It is, by heart, free, flexible and built to extend and boost your agile codebelt.

## Codebelt.Bootstrapper.Worker
Expand Down
10 changes: 9 additions & 1 deletion .nuget/Codebelt.Bootstrapper/PackageReleaseNotes.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
Version 4.0.6
Version 5.0.0
Availability: .NET 10 and .NET 9

# ALM
- ADDED Support for TFM .NET 10 (LTS)
- REMOVED Support for TFM .NET 8 (LTS)
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)

Version 4.0.6
Availability: .NET 9 and .NET 8

# ALM
Expand Down
2 changes: 2 additions & 0 deletions .nuget/Codebelt.Bootstrapper/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ An open-source family of assemblies (MIT license) that provide a uniform and con

Also, common for all, is the implementation of the `IHostedService` interface; this means that all project types, including the traditional `console`, now have option for graceful shutdown should your application require this (cronjob scenarios or similar).

Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.

Comment on lines +7 to +8
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Standardize version ordering: list newest version first.

The version order should list .NET 10 before .NET 9 to maintain consistency with the availability documentation and follow the convention of listing the newest version first.

Apply this diff:

-Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.
+Your versatile Bootstrapper companion for modern development with `.NET 10` and `.NET 9`.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.
Your versatile Bootstrapper companion for modern development with `.NET 10` and `.NET 9`.
🤖 Prompt for AI Agents
.nuget/Codebelt.Bootstrapper/README.md around lines 7 to 8: the versions are
listed with .NET 9 before .NET 10; reorder the text so the newest version
appears first by swapping the two entries to place `.NET 10` before `.NET 9`,
ensuring punctuation and formatting remain consistent with the surrounding
sentence.

It is, by heart, free, flexible and built to extend and boost your agile codebelt.

## Codebelt.Bootstrapper
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

For more details, please refer to `PackageReleaseNotes.txt` on a per assembly basis in the `.nuget` folder.

## [5.0.0] - 2025-11-14

This is a major release that focuses on adapting the latest `.NET 10` release (LTS) in exchange for current `.NET 8` (LTS).

> To ensure access to current features, improvements, and security updates, and to keep the codebase clean and easy to maintain, we target only the latest long-term (LTS), short-term (STS) and (where applicable) cross-platform .NET versions.

## [4.0.6] - 2025-10-20

This is a service update that focuses on package dependencies.
Expand Down
26 changes: 22 additions & 4 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
</PropertyGroup>

<PropertyGroup Condition="'$(IsTestProject)' == 'false' or '$(IsExcluded)' == 'true'">
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0</TargetFrameworks>
<Copyright>Copyright © Geekle 2021-2025. All rights reserved.</Copyright>
<Authors>gimlichael</Authors>
<Company>Geekle</Company>
Expand Down Expand Up @@ -47,20 +47,38 @@
<None Include="..\..\.nuget\$(MSBuildProjectName)\README.md" Pack="true" PackagePath="\"/>
</ItemGroup>

<PropertyGroup Condition="'$(IsTestProject)' == 'true' or '$(IsExcluded)' == 'true'">
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<PropertyGroup Condition="'$(IsTestProject)' == 'true'">
<OutputType>Exe</OutputType>
<TargetFrameworks>net10.0;net9.0</TargetFrameworks>
<IsPackable>false</IsPackable>
<RunAnalyzers>false</RunAnalyzers>
<RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
<RunAnalyzersDuringLiveAnalysis>false</RunAnalyzersDuringLiveAnalysis>
<SonarQubeExclude>true</SonarQubeExclude>
<WarningLevel>0</WarningLevel>
<AnalysisLevel>none</AnalysisLevel>
<NoWarn>NU1701,NETSDK1206</NoWarn>
<CheckEolTargetFramework>false</CheckEolTargetFramework>
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The new UseMicrosoftTestingPlatformRunner property is set to true for test projects. This is a new testing approach that requires xUnit v3 support. Please ensure that the CI/CD pipeline and local development environments are compatible with this new test runner, as it may require updates to test execution commands or IDE integrations.

Suggested change
<CheckEolTargetFramework>false</CheckEolTargetFramework>
<CheckEolTargetFramework>false</CheckEolTargetFramework>
<!--
NOTE: The UseMicrosoftTestingPlatformRunner property enables the new test runner, which requires xUnit v3.
Ensure that CI/CD pipelines and local development environments are updated to support this runner.
This may require changes to test execution commands and IDE integrations.
-->

Copilot uses AI. Check for mistakes.
<UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner>
</PropertyGroup>

<PropertyGroup Condition="'$(IsExcluded)' == 'true'">
<TargetFrameworks>net10.0</TargetFrameworks>
<IsPackable>false</IsPackable>
<RunAnalyzers>false</RunAnalyzers>
<RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
<RunAnalyzersDuringLiveAnalysis>false</RunAnalyzersDuringLiveAnalysis>
<SonarQubeExclude>true</SonarQubeExclude>
<WarningLevel>0</WarningLevel>
<AnalysisLevel>none</AnalysisLevel>
<NoWarn>NU1701,NETSDK1206</NoWarn>
<CheckEolTargetFramework>false</CheckEolTargetFramework>
</PropertyGroup>

<ItemGroup Condition="'$(IsTestProject)' == 'true'">
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.v3" />
<PackageReference Include="xunit.v3.runner.console" />
<PackageReference Include="xunit.runner.visualstudio">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand Down
35 changes: 18 additions & 17 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,30 @@
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Codebelt.Extensions.Swashbuckle.AspNetCore" Version="9.0.8" />
<PackageVersion Include="Codebelt.Extensions.Xunit.App" Version="10.0.7" />
<PackageVersion Include="Cuemon.Core" Version="9.0.10" />
<PackageVersion Include="Cuemon.Extensions.Hosting" Version="9.0.10" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
<PackageVersion Include="Codebelt.Extensions.Swashbuckle.AspNetCore" Version="10.0.0" />
<PackageVersion Include="Codebelt.Extensions.Xunit.App" Version="11.0.0" />
<PackageVersion Include="Cuemon.Core" Version="10.0.0" />
<PackageVersion Include="Cuemon.Extensions.Hosting" Version="10.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageVersion Include="MinVer" Version="6.0.0" />
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
<PackageVersion Include="coverlet.msbuild" Version="6.0.4" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.v3" Version="3.1.0" />
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The package upgrade from xunit (v2.9.3) to xunit.v3 (v3.1.0) is a major version change that may introduce breaking changes in test APIs. The removed using Xunit.Abstractions; statements in multiple test files suggest that ITestOutputHelper and related types may have been removed or relocated. Please verify that all tests compile and run successfully with xUnit v3, as this is a significant breaking change that may require updates to test code beyond just removing unused imports.

Copilot uses AI. Check for mistakes.
<PackageVersion Include="xunit.v3.runner.console" Version="3.2.0" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net9'))">
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.10" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.10" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.10" />
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.11" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="9.0.11" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.11" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.11" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.11" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net8'))">
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="8.0.21" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.21" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
<ItemGroup Condition="$(TargetFramework.StartsWith('net10'))">
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="10.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="10.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.0" />
</ItemGroup>
</Project>
21 changes: 16 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,18 @@

[![bootstrapper CI/CD Pipeline](https://github.com/codebeltnet/bootstrapper/actions/workflows/pipelines.yml/badge.svg)](https://github.com/codebeltnet/bootstrapper/actions/workflows/pipelines.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=bootstrapper&metric=alert_status)](https://sonarcloud.io/dashboard?id=bootstrapper) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=bootstrapper&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=bootstrapper) [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=bootstrapper&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=bootstrapper) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=bootstrapper&metric=security_rating)](https://sonarcloud.io/dashboard?id=bootstrapper) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/codebeltnet/bootstrapper/badge)](https://scorecard.dev/viewer/?uri=github.com/codebeltnet/bootstrapper)

## ℹ️ About

An open-source family of assemblies (MIT license) that provide a uniform and consistent way of bootstraping your code with Program.cs paired with Startup.cs -OR- using the new `Minimal` equivalent for all project types.

Full documentation (generated by [DocFx](https://github.com/dotnet/docfx)) located here: https://bootstrapper.codebelt.net/
Your versatile Bootstrapper companion for modern development with `.NET 9` and `.NET 10`.

It is, by heart, free, flexible and built to extend and boost your agile codebelt.

> [!NOTE]
> To ensure access to current features, improvements, and security updates, and to keep the codebase clean and easy to maintain, we target only the latest long-term (LTS), short-term (STS) and (where applicable) cross-platform .NET versions.

## Codebelt.Bootstrapper
### Codebelt.Bootstrapper

The core types of this lightweight boostrapper framework optimized for console apps, providing a uniform and consistent implementation of:

Expand All @@ -22,18 +29,22 @@ The core types of this lightweight boostrapper framework optimized for console a

Common for all project types is that they have both `Program.cs` paired with `Startup.cs`. Also, all are implemented using `IHostedService`; this means that for a traditional `console` you have option for graceful shutdown should you require this (cronjob scenarios or similar).

## Codebelt.Bootstrapper.Console
### Codebelt.Bootstrapper.Console

An implementation optimized for `console` applications.

## Codebelt.Bootstrapper.Web
### Codebelt.Bootstrapper.Web

An implementation optimized for `web`, `webapi`, `webapp`, `razor`, `mvc` applications.

## Codebelt.Bootstrapper.Worker
### Codebelt.Bootstrapper.Worker

An implementation optimized for `worker` services.

## 📚 Documentation

Full documentation (generated by [DocFx](https://github.com/dotnet/docfx)) located here: https://bootstrapper.codebelt.net/

## 📦 Standalone Packages

Provides a focused API for bootstraping your code with Program.cs paired with Startup.cs -OR- using the new `Minimal` equivalent for all project types.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\Codebelt.Bootstrapper.Console\Codebelt.Bootstrapper.Console.csproj" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion app/Codebelt.Bootstrapper.MinimalWebApi.App/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

using Codebelt.Bootstrapper.Web;
using Microsoft.OpenApi.Models;
using Microsoft.OpenApi;
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The namespace change from Microsoft.OpenApi.Models to Microsoft.OpenApi may cause compilation errors if types from the Models namespace (such as OpenApiInfo, OpenApiContact, etc.) are used in this file. Please verify that this import provides access to all required types or add the specific namespace if needed.

Suggested change
using Microsoft.OpenApi;
using Microsoft.OpenApi;
using Microsoft.OpenApi.Models;

Copilot uses AI. Check for mistakes.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify that OpenApiInfo is accessible from the Microsoft.OpenApi namespace.

The using directive was changed from Microsoft.OpenApi.Models to Microsoft.OpenApi, but the code still references OpenApiInfo (line 20). This will cause a compilation error if OpenApiInfo is not directly accessible from the parent Microsoft.OpenApi namespace.

Please search for the latest documentation to confirm the correct namespace for OpenApiInfo in the version of the Microsoft OpenAPI libraries being used:

If OpenApiInfo remains in Microsoft.OpenApi.Models, this change should be reverted or an additional using directive should be added.


🌐 Web query:

Microsoft.OpenApi namespace OpenApiInfo location

💡 Result:

OpenApiInfo is defined in the Microsoft.OpenApi.Models namespace, in the Microsoft.OpenApi.dll assembly (NuGet package: Microsoft.OpenApi). [1][2]

Sources:

  • Microsoft docs — OpenApiInfo (Microsoft.OpenApi.Models). [1]
  • NuGet — Microsoft.OpenApi package. [2]

Revert the using directive to Microsoft.OpenApi.Models or add a separate using directive.

OpenApiInfo is defined in the Microsoft.OpenApi.Models namespace, not in Microsoft.OpenApi. The current change from using Microsoft.OpenApi.Models; to using Microsoft.OpenApi; will cause a compilation error when accessing OpenApiInfo at line 20. Either restore the original using directive or add using Microsoft.OpenApi.Models; alongside it.

🤖 Prompt for AI Agents
In app/Codebelt.Bootstrapper.MinimalWebApi.App/Program.cs around line 3, the
current using directive imports Microsoft.OpenApi which does not contain
OpenApiInfo (used at line 20); restore the original using
Microsoft.OpenApi.Models or add a separate using Microsoft.OpenApi.Models; so
that OpenApiInfo resolves and the file compiles—update the using directives
accordingly and run a build to verify the error is resolved.


namespace Codebelt.Bootstrapper.MinimalWebApi.App
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Expand Down
Loading
Loading