Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
62035a1
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 3, 2025
311333d
chore(ci): pin dependencies (#8)
renovate[bot] Dec 3, 2025
4d7d674
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 3, 2025
53d3a83
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 8, 2025
52b5b41
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 8, 2025
35bcbf0
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 9, 2025
657a057
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 9, 2025
84d1dff
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 9, 2025
c173cc6
feat: Initial project structure (#13)
samtrion Dec 10, 2025
b15779f
chore(deps): update dependency netevolve.defaults to 1.5.0 (#10)
renovate[bot] Dec 10, 2025
6cff371
chore(deps): update dependency sonaranalyzer.csharp to 10.16.1.129956…
renovate[bot] Dec 10, 2025
cfcf669
chore(ci): update dailydevops/pipelines action to v1.3.13 (#9)
renovate[bot] Dec 10, 2025
70be3cb
chore(deps): update dependency microsoft.codeanalysis.netanalyzers to…
renovate[bot] Dec 10, 2025
ae5b249
chore(ci): Switched to Matrix Pipeline (#15)
samtrion Dec 10, 2025
93e7ba1
chore(deps): update dependency tunit to 1.5.33 (#16)
renovate[bot] Dec 10, 2025
0095811
chore(ci): update dailydevops/pipelines action to v2 (#17)
renovate[bot] Dec 10, 2025
c12cb76
chore(deps): update dependency tunit to 1.5.37 (#19)
renovate[bot] Dec 10, 2025
ea2900d
chore(deps): Added additional Analyzers (#18)
samtrion Dec 10, 2025
cae2132
chore: Added addtional commands `create` and `serve` (#20)
samtrion Dec 10, 2025
5a01cad
feat: Added `Logging` (#21)
samtrion Dec 10, 2025
6fc2417
feat: Enabled Dependency Injection (#22)
samtrion Dec 10, 2025
4fb9478
docs: XML Summaries updated (#23)
samtrion Dec 10, 2025
d8f832b
chore(deps): update dependency tunit to 1.5.42 (#24)
renovate[bot] Dec 11, 2025
3280c3e
chore: Removed core project (#25)
samtrion Dec 11, 2025
e0d4b30
chore(deps): update dependency tunit to 1.5.48 (#26)
renovate[bot] Dec 12, 2025
07cc394
chore(deps): update dependency tunit to 1.5.53 (#27)
renovate[bot] Dec 12, 2025
7cfceef
feat: First Release `NetEvolve.ForgingBlazor.Extensibility` (#28)
samtrion Dec 13, 2025
ae35525
chore(deps): update dependency csharpier.msbuild to 1.2.2 (#29)
renovate[bot] Dec 13, 2025
3bf4cd2
chore: Added Base properties `AbsoluteLink` and `RelativeLink` (#30)
samtrion Dec 13, 2025
2795969
test: Extended Command Help and Command Build tests (#31)
samtrion Dec 14, 2025
d6ea433
docs: Updated Extensibility README (#33)
samtrion Dec 14, 2025
3a384e7
chore(deps): update dependency tunit to 1.5.60 (#32)
renovate[bot] Dec 14, 2025
01c3d5e
chore: Now we have always a project path (#34)
samtrion Dec 14, 2025
6a4e8ee
fix: Renamed `PublishDate` (#35)
samtrion Dec 14, 2025
c529b4f
chore(deps): update dependency csharpier.msbuild to 1.2.3 (#36)
renovate[bot] Dec 14, 2025
fe66dd1
chore(deps): update dependency roslynator.analyzers to 4.15.0 (#37)
renovate[bot] Dec 14, 2025
1b9a48c
chore(deps): update dependency roslynator.codeanalysis.analyzers to 4…
renovate[bot] Dec 14, 2025
a1f3cde
chore(deps): update dependency roslynator.codefixes to 4.15.0 (#39)
renovate[bot] Dec 14, 2025
156f7d4
chore(deps): update dependency roslynator.formatting.analyzers to 4.1…
renovate[bot] Dec 15, 2025
6797323
chore(deps): update dependency roslynator.refactorings to 4.15.0 (#41)
renovate[bot] Dec 15, 2025
ea1153e
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 15, 2025
d7d76c1
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 15, 2025
1dd31f4
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 16, 2025
edbb76c
chore(ci): update dailydevops/pipelines action to v2.0.21 (#42)
renovate[bot] Dec 16, 2025
08c92e8
chore(deps): update dependency verify.tunit to 31.9.0 (#43)
renovate[bot] Dec 17, 2025
e164636
chore(deps): update dependency sonaranalyzer.csharp to 10.17.0.131074…
renovate[bot] Dec 17, 2025
96f9f03
chore(deps): update dependency tunit to 1.5.70 (#45)
renovate[bot] Dec 17, 2025
44bc162
chore(deps): update dependency tunit to 1.5.78 (#46)
renovate[bot] Dec 19, 2025
f4fed50
chore(deps): update dependency tunit to 1.5.80 (#47)
renovate[bot] Dec 19, 2025
094fdf0
chore(deps): update dependency tunit to 1.6.0 (#48)
renovate[bot] Dec 21, 2025
69b483d
chore(deps): update dependency tunit to 1.6.5 (#49)
renovate[bot] Dec 21, 2025
bf80ec0
chore(template): sync with dailydevops/dotnet-template [skip ci]
samtrion Dec 22, 2025
2adc1c6
chore(deps): update dependency tunit to 1.6.15 (#50)
renovate[bot] Dec 22, 2025
aae3ee1
chore(deps): update dependency tunit to 1.6.20 (#51)
renovate[bot] Dec 23, 2025
a9e705f
chore(deps): update dependency csharpier.msbuild to 1.2.4 (#52)
renovate[bot] Dec 24, 2025
f7cd44c
chore(deps): update dependency tunit to 1.6.25 (#53)
renovate[bot] Dec 24, 2025
5d363e6
chore(deps): update dependency netevolve.extensions.tunit to 3.4.0 (#55)
renovate[bot] Dec 24, 2025
25cd464
chore(deps): update dependency tunit to 1.6.28 (#54)
renovate[bot] Dec 24, 2025
2c85a95
chore(deps): update dependency verify.tunit to 31.9.1 (#56)
renovate[bot] Dec 25, 2025
129fdc0
chore(deps): update dependency verify.tunit to 31.9.2 (#57)
renovate[bot] Dec 25, 2025
5298fd7
chore(deps): update dependency verify.tunit to 31.9.3 (#58)
renovate[bot] Dec 27, 2025
7fe1c49
chore(deps): update dependency tunit to 1.7.0 (#59)
renovate[bot] Dec 28, 2025
aca2b35
chore(deps): update dependency netevolve.defaults to 1.5.35 (#60)
renovate[bot] Dec 29, 2025
2000405
chore(deps): update dependency tunit to 1.7.7 (#61)
renovate[bot] Dec 29, 2025
0345248
feat: Add extensible content pipeline with segment support (#62)
samtrion Dec 31, 2025
ca31542
chore(deps): update dependency csharpier.msbuild to 1.2.5 (#71)
renovate[bot] Jan 1, 2026
a5d315f
chore: Updated LICENSE [skip ci] (#72)
github-actions[bot] Jan 1, 2026
8142224
test: Implement automated unit tests for core components (#70)
Copilot Jan 2, 2026
5cc55ad
chore(deps): update dependency tunit to 1.7.20 (#73)
renovate[bot] Jan 2, 2026
c4917fa
chore(template): sync with dailydevops/template-dotnet [skip ci]
samtrion Jan 2, 2026
52d77f6
chore(template): sync with dailydevops/template-dotnet [skip ci]
samtrion Jan 2, 2026
34dd4dc
chore(template): sync with dailydevops/template-dotnet [skip ci]
samtrion Jan 2, 2026
847dcf9
chore(template): sync with dailydevops/template-dotnet [skip ci]
samtrion Jan 2, 2026
2e25db1
chore(template): sync with dailydevops/template-dotnet [skip ci]
samtrion Jan 2, 2026
646ef82
chore(template): sync with dailydevops/template-dotnet [skip ci]
samtrion Jan 2, 2026
c75644d
chore(template): sync with dailydevops/template-dotnet [skip ci]
samtrion Jan 2, 2026
839a8ac
chore(deps): update dependency tunit to 1.8.1 (#74)
renovate[bot] Jan 3, 2026
cf845a8
chore(deps): update dependency tunit to 1.8.9 (#75)
renovate[bot] Jan 3, 2026
aad92bb
chore(template): sync with dailydevops/template-dotnet [skip ci]
samtrion Jan 3, 2026
ee9b98e
chore(ci): update dailydevops/pipelines action to v2.2.8 (#77)
renovate[bot] Jan 4, 2026
252daf7
chore(ci): update dailydevops/pipelines action to v2.2.8 (#76)
renovate[bot] Jan 4, 2026
004619d
chore(deps): update dependency netevolve.extensions.tunit to 3.5.3 (#78)
renovate[bot] Jan 4, 2026
deb9793
chore(deps): update dependency tunit to 1.9.2 (#79)
renovate[bot] Jan 4, 2026
9de160e
chore(deps): update dependency microsoft.aspnetcore.testhost to v10
renovate[bot] Jan 4, 2026
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: 2 additions & 0 deletions .csharpierignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
**/nuget.config
**/_snapshots/
**/_snapshot/
3 changes: 2 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ indent_size = 4
generated_code = true

# XML project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj,nativeproj,locproj}]
[*.{slnx,csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj,nativeproj,locproj}]
indent_size = 2
max_line_length = 160

# Xml build files
[*.builds]
Expand Down
4 changes: 1 addition & 3 deletions .github/instructions/blazor.instructions.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
---
applyTo: '**/*.razor, **/*.razor.cs, **/*.razor.css'

description: 'This file contains instructions for Blazor development.
It includes guidelines for component development, performance optimization, and following Blazor coding standards.
Ensure to follow the practices outlined in this file to maintain code quality and consistency.'
description: This file contains instructions for Blazor development. It includes guidelines for component development, performance optimization, and following Blazor coding standards. Ensure to follow the practices outlined in this file to maintain code quality and consistency.
---

# Blazor Development Instructions
Expand Down
4 changes: 1 addition & 3 deletions .github/instructions/csharp.instructions.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
---
applyTo: '**/*.cs'

description: 'This file contains instructions for C# development.
It includes guidelines for using GitHub Copilot, managing dependencies, and following coding standards.
Ensure to follow the practices outlined in this file to maintain code quality and consistency.'
description: This file contains instructions for C# development. It includes guidelines for using GitHub Copilot, managing dependencies, and following coding standards. Ensure to follow the practices outlined in this file to maintain code quality and consistency.
---

# C# Development Instructions
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,13 @@ jobs:
all:
if: github.run_id != 1
name: Build & Tests
uses: dailydevops/pipelines/.github/workflows/build-dotnet-single.yml@1.2.28
uses: dailydevops/pipelines/.github/workflows/build-dotnet-matrix.yml@8c417832638f49cca3ea19247dc9f15d3632a1fc # 2.2.8
with:
disableTestsOnLinux: false
disableTestsOnMacOs: false
disableTestsOnWindows: false
dotnetLogging: ${{ inputs.dotnet-logging }}
dotnetVersion: ${{ vars.NE_DOTNET_TARGETFRAMEWORKS }}
failFast: false
solution: ./ForgingBlazor.slnx
secrets: inherit
44 changes: 44 additions & 0 deletions .github/workflows/cleanup-cache.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Delete Cache after PR merge

on:
pull_request:
types:
- closed

permissions:
contents: read
actions: write

jobs:
cleanup:
name: Clear cache
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
with:
fetch-depth: 0

- name: Cleanup
run: |
gh extension install actions/gh-actions-cache

REPO=${{ github.repository }}

# get the branch
BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge"

# fetch list of cache key
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 )

# set this to not fail the workflow while deleting cache keys
set +e

# delete cache key
for cacheKey in $cacheKeysForPR
do
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
done
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
35 changes: 35 additions & 0 deletions .github/workflows/clone-labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Clone Labels

on:
schedule:
- cron: '0 0 1 * *' # 1st of every month at 00:00 UTC
- cron: '0 0 15 * *' # 15th of every month at 00:00 UTC

workflow_dispatch:

permissions:
contents: read
issues: write

jobs:
clone-labels:
name: Clone Labels
runs-on: ubuntu-latest
if: github.repository != 'dailydevops/template-dotnet'

steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

- name: Clone labels
run: |
SOURCE_REPO="dailydevops/template-dotnet"

echo "Cloning labels from $SOURCE_REPO"

# Clone labels from source to target repository
gh label clone $SOURCE_REPO --force

echo "✅ Labels successfully cloned from $SOURCE_REPO to ${{ github.repository }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28 changes: 28 additions & 0 deletions .github/workflows/publish-nuget.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: NuGet Package

on:
workflow_run:
workflows: [CI]
types: [completed]
branches: [main]

permissions:
actions: read
contents: write
pull-requests: write

concurrency:
group: publish-nuget
cancel-in-progress: true

jobs:
nuget:
name: Publish
if: ${{ github.event.workflow_run.conclusion == 'success' && github.actor != 'dependabot[bot]' && github.actor != 'renovate[bot]' }}
uses: dailydevops/pipelines/.github/workflows/publish-nuget.yml@8c417832638f49cca3ea19247dc9f15d3632a1fc # 2.2.8
with:
workflowName: ${{ github.event.workflow_run.name }}
artifactPattern: release-packages-*
environment: NuGet
runId: ${{ github.event.workflow_run.id }}
secrets: inherit
6 changes: 3 additions & 3 deletions .github/workflows/update-license.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
workflow_dispatch:

permissions:
contents: read
contents: write
pull-requests: write

jobs:
Expand All @@ -15,11 +15,11 @@ jobs:
steps:

- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
with:
fetch-depth: 0

- uses: FantasticFiasco/action-update-license-year@v3
- uses: FantasticFiasco/action-update-license-year@f180e962fa988db222d8f03ef4636750312d1b3d # v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
prTitle: 'chore: Updated LICENSE'
Expand Down
128 changes: 128 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
info@daily-devops.net.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
38 changes: 38 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Contributing

All contributions must follow the rules below to stay consistent with our automation and downstream consumers.

## Expectations
- Use English for all code, documentation, discussions, and commit messages.
- Follow the trunk-based workflow implied by GitVersion; prefer short-lived feature branches merged via pull requests.
- Keep production code under `src/` and test projects under `tests/` using the `{ProjectName}.Tests.Unit` / `{ProjectName}.Tests.Integration` pattern.
- Add NuGet packages without versions in project files; define versions centrally in `Directory.Packages.props` only.
- Leave repository-wide config files (e.g., `.editorconfig`, `Directory.Build.props`, `Directory.Packages.props` structure) unchanged unless explicitly requested.

## Commit messages (required)
Commit messages **must** follow the [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/) format:

```text
<type>[optional scope]: <description>
```

Allowed types include `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `build`, `ci`, `perf`, and `revert`. Indicate breaking changes with `!` after the type/scope or a `BREAKING CHANGE:` footer.

## Development workflow
- The `global.json` file pins test runner and in some cases the required SDK version; see README.md for the required .NET SDK version and any additional prerequisites.
- Restore, build, and test from the solution root before opening a pull request: `dotnet restore`, `dotnet build`, `dotnet test`.
- Execute code formatting using `csharpier format .` from the solution root.
- Keep code and documentation clear and concise; prefer small, focused pull requests.
- Update documentation when behavior or public surface changes.

## Pull requests
- Provide a short summary, the motivation for the change, and any relevant issue links.
- List the tests you ran and the outcomes.
- Ensure new code includes appropriate tests (unit or integration) placed under the matching `tests/` project.
- Avoid reformatting unrelated code or introducing drive-by changes.

## Dependency updates
We use Renovate Bot to create automated dependency update pull requests using conventional commit prefixes. When adding new dependencies manually, follow the same conventions:
- Declare the version in `Directory.Packages.props`.
- Reference the package in the project file without a version attribute.
- Prefer the smallest viable dependency set; remove unused packages.
18 changes: 9 additions & 9 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<Project>
<PropertyGroup Label="Package settings">
<Title>$(MSBuildProjectName)</Title>
<Description></Description>
<RepositoryUrl></RepositoryUrl>
<PackageProjectUrl></PackageProjectUrl>
<PackageReleaseNotes>$(RepositoryUrl)/releases</PackageReleaseNotes>
<PackageTags></PackageTags>
<CopyrightYearStart>2024</CopyrightYearStart>
<Description>ForgingBlazor is a modern Blazor-based static site generator backed by a clean, well-structured component library. Built on .NET for high performance and fast builds, it delivers a streamlined, Blazor-first workflow for creating efficient, maintainable, and scalable websites.</Description>
<RepositoryUrl>https://github.com/dailydevops/forgingblazor.git</RepositoryUrl>
<PackageProjectUrl>https://github.com/dailydevops/forgingblazor</PackageProjectUrl>
<PackageReleaseNotes>$(PackageProjectUrl)/releases</PackageReleaseNotes>
<PackageTags>forgingblazor;staticcontent;staticsitegenerator;generator;blog;blogengine;blazor</PackageTags>
<CopyrightYearStart>2025</CopyrightYearStart>
</PropertyGroup>
<PropertyGroup>
<!-- Workaround, until https://github.com/GitTools/GitVersion/pull/4206 is released -->
<GitVersionTargetFramework>net8.0</GitVersionTargetFramework>
<PropertyGroup Label="Build options">
<_ProjectTargetFrameworks>net9.0;net10.0</_ProjectTargetFrameworks>
<_TestTargetFrameworks>net9.0;net10.0</_TestTargetFrameworks>
</PropertyGroup>
</Project>
Loading
Loading