Skip to content

Commit 65d2381

Browse files
authored
Merge pull request #918 from neozhu/upgrade-to-dotnet10
Upgrade to .NET 10 - Update README Documentation
2 parents 8bb1c46 + fa56fe4 commit 65d2381

21 files changed

Lines changed: 179 additions & 218 deletions

File tree

.github/workflows/codeql-analysis.yml

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ name: "CodeQL"
1414
on:
1515
push:
1616
branches: [ "main" ]
17-
aths-ignore:
17+
paths-ignore:
1818
- "deploy/**"
1919
pull_request:
2020
# The branches below must be a subset of the branches above
@@ -33,43 +33,35 @@ jobs:
3333
security-events: write
3434
pull-requests: read
3535

36+
strategy:
37+
fail-fast: false
38+
matrix:
39+
language: [ 'csharp' ]
3640

3741
steps:
3842
- name: Checkout repository
3943
uses: actions/checkout@v4
4044

41-
# Initializes the CodeQL tools for scanning.
42-
- name: Initialize CodeQL
43-
uses: github/codeql-action/init@v3
44-
with:
45-
languages: csharp
46-
47-
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
48-
# If this step fails, then you should remove it and run the build manually (see below)
49-
# - name: Autobuild
50-
# uses: github/codeql-action/autobuild@v2
51-
52-
# ℹ️ Command-line programs to run using the OS shell.
53-
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
54-
55-
# If the Autobuild fails above, remove it and uncomment the following three lines.
56-
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
57-
58-
# - run: |
59-
# echo "Run, Build Application using script"
60-
# ./location_of_script_within_repo/buildscript.sh
6145
- name: Setup .NET SDK
62-
uses: actions/setup-dotnet@v4
46+
uses: actions/setup-dotnet@v5
6347
with:
64-
dotnet-version: 9.0.x
48+
dotnet-version: 10.0.x
49+
include-prerelease: true
6550

51+
# Initializes the CodeQL tools for scanning.
52+
- name: Initialize CodeQL
53+
uses: github/codeql-action/init@v4
54+
with:
55+
language: ${{ matrix.language }}
56+
queries: security-and-quality
6657

6758
- name: Restore dependencies
68-
run: dotnet restore CleanArchitecture.Blazor.slnx
59+
run: dotnet restore CleanArchitecture.Blazor.slnx
60+
6961
- name: Build
70-
run: dotnet build CleanArchitecture.Blazor.slnx --configuration Debug --no-restore
62+
run: dotnet build CleanArchitecture.Blazor.slnx --configuration Release --no-restore
7163

72-
- name: Perform CodeQL Analysis
73-
uses: github/codeql-action/analyze@v3
74-
with:
75-
languages: csharp
64+
# - name: Perform CodeQL Analysis
65+
# uses: github/codeql-action/analyze@v4
66+
# with:
67+
# category: "/language:${{matrix.language}}"

.github/workflows/dotnet.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ jobs:
1919
runs-on: ubuntu-latest
2020

2121
steps:
22-
- uses: actions/checkout@v4
22+
- uses: actions/checkout@v5
2323
- name: Setup .NET
24-
uses: actions/setup-dotnet@v4
24+
uses: actions/setup-dotnet@v5
2525
with:
26-
dotnet-version: 9.0.x
26+
dotnet-version: 10.0.x
2727

2828
- name: Restore dependencies
2929
run: dotnet restore CleanArchitecture.Blazor.slnx

CleanArchitecture.Blazor.nuspec

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,35 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
33
<metadata>
44
<id>CleanArchitecture.Blazor.Solution.Template</id>
5-
<version>1.30.2</version>
5+
<version>1.30.3</version>
66
<title>Clean Architecture Blazor Solution Template</title>
77
<authors>hl.z</authors>
8-
<description>Clean Architecture Blazor Solution Template for .NET9.</description>
8+
<description>Clean Architecture Blazor Solution Template for .NET 10.</description>
99
<summary>
10-
A Clean Architecture Blazor Server dashboard application template for .NET9.
10+
A Clean Architecture Blazor Server dashboard application template for .NET 10.
1111
</summary>
1212
<releaseNotes><![CDATA[
1313
1.30.2
14+
- Upgraded to .NET 10 (including all project files, Docker images, and dependencies)
15+
- Updated all Microsoft packages to .NET 10 RC2 (10.0.0-rc.2.25502.107)
16+
- Updated Entity Framework Core to version 10.0.0-rc.2
17+
- Updated ASP.NET Core packages to version 10.0.0-rc.2
18+
- Upgraded third-party packages for .NET 10 compatibility:
19+
- Npgsql.EntityFrameworkCore.PostgreSQL → 10.0.0-rc.2
20+
- EFCore.NamingConventions → 10.0.0-rc.2
21+
- Hangfire packages → 1.8.22
22+
- Minio → 7.0.0
23+
- QuestPDF → 2025.12.0-alpha3
24+
- NUnit3TestAdapter → 6.0.0-beta.1
25+
- Updated Docker base images to .NET 10 runtime and SDK
1426
- Added full Specification pattern support (spec) for advanced querying and filtering
1527
- Integrated Stl.Fusion for real-time UI/state updates across sessions
1628
- Implemented Google and Microsoft external provider authentication enhancements
1729
- Improved multi-tenant context handling and tenant switch service
1830
- Enhanced Document OCR pipeline (Gemini integration and job reliability fixes)
19-
- Fixed prior OCR process stability issues
2031
- Added Security Risk Dashboard and user login risk summary indicators
2132
- Picklist and PicklistSet import/export and advanced specification filtering
2233
- Added comprehensive validation and exception handling pipeline behaviours
23-
- Added welcome and MFA factor code notification commands
2434
- Theme customization (dynamic primary color and themes menu improvements)
2535
- Localization and culture enhancements (multi-language resource sets)
2636
- Added global search dialog and improved navigation menu structure
@@ -29,7 +39,7 @@
2939
- Strengthened security analysis and audit logging (LoginAudits, AuditTrails, SystemLogs)
3040
- Added user profile reactive state management and session tracking
3141
- Added AI settings configuration interface
32-
- Updated EF Core configurations and initial migrations for .NET9
42+
- Updated EF Core configurations and migrations for .NET 10
3343
]]></releaseNotes>
3444

3545
<projectUrl>https://github.com/neozhu/CleanArchitectureWithBlazorServer</projectUrl>

Dockerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
1+
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
22

3-
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
3+
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
44
# apt update and install fonts
55
RUN echo "deb http://deb.debian.org/debian/ bookworm main contrib" > /etc/apt/sources.list && \
66
echo "deb-src http://deb.debian.org/debian/ bookworm main contrib" >> /etc/apt/sources.list && \
@@ -33,7 +33,7 @@ EXPOSE 443
3333

3434

3535

36-
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
36+
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
3737
ARG BUILD_CONFIGURATION=Release
3838
WORKDIR /src
3939
COPY ["src/Migrators/Migrators.MSSQL/Migrators.MSSQL.csproj", "src/Migrators/Migrators.MSSQL/"]
@@ -60,4 +60,4 @@ FROM base AS final
6060
WORKDIR /app
6161
COPY --from=publish /app/publish .
6262

63-
ENTRYPOINT ["dotnet", "CleanArchitecture.Blazor.Server.UI.dll"]
63+
ENTRYPOINT ["dotnet", "CleanArchitecture.Blazor.Server.UI.dll"]

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Clean Architecture Blazor Server
1+
# Clean Architecture Blazor Server
22

33
[![Build](https://github.com/neozhu/CleanArchitectureWithBlazorServer/actions/workflows/dotnet.yml/badge.svg)](https://github.com/neozhu/CleanArchitectureWithBlazorServer/actions/workflows/dotnet.yml)
44
[![CodeQL](https://github.com/neozhu/CleanArchitectureWithBlazorServer/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/neozhu/CleanArchitectureWithBlazorServer/actions/workflows/codeql-analysis.yml)
@@ -10,7 +10,7 @@
1010
1111
## 🎯 Overview
1212

13-
This project is a production-ready Blazor Server application template that demonstrates Clean Architecture implementation with .NET 9 and follows **Blazor Clean Architecture best practices**.
13+
This project is a production-ready Blazor Server application template that demonstrates Clean Architecture implementation with **.NET 10** and follows **Blazor Clean Architecture best practices**.
1414
It provides a solid foundation for building scalable, maintainable enterprise applications with modern **spec-driven development practices**.
1515

1616
### Key Features
@@ -46,7 +46,7 @@ Experience the application in action:
4646
| Layer | Technologies |
4747
|-------|-------------|
4848
| **Frontend** | Blazor Server, MudBlazor, SignalR |
49-
| **Backend** | .NET 9, ASP.NET Core, MediatR, FluentValidation |
49+
| **Backend** | .NET 10, ASP.NET Core, MediatR, FluentValidation |
5050
| **Database** | Entity Framework Core, MSSQL/PostgreSQL/SQLite |
5151
| **Authentication** | ASP.NET Core Identity, OAuth 2.0, JWT |
5252
| **Caching** | FusionCache, Redis |
@@ -89,7 +89,7 @@ The project includes a comprehensive [Development Workflow](docs/) with:
8989

9090
### Prerequisites
9191

92-
- [.NET 9 SDK](https://dotnet.microsoft.com/download/dotnet/9.0)
92+
- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
9393
- [Visual Studio 2022](https://visualstudio.microsoft.com/) or [Rider](https://www.jetbrains.com/rider/)
9494
- [Docker Desktop](https://www.docker.com/) (optional)
9595

@@ -150,7 +150,7 @@ See [Docker Setup Documentation](#docker-setup-for-blazor-server-application) fo
150150
OpenSpec enables spec-driven, reviewable changes with clear proposals, deltas, and tasks. This repo includes guidance in `openspec/AGENTS.md` and a project context in `openspec/project.md`.
151151

152152
- Read the quickstart: `openspec/AGENTS.md`
153-
- Project conventions and patterns: `openspec/project.md` (see New Entity/Feature Guide (Contacts Pattern))
153+
- Project conventions and patterns: `openspec/project.md` (see "New Entity/Feature Guide (Contacts Pattern)")
154154

155155
### Workflow
156156

@@ -181,7 +181,7 @@ OpenSpec enables spec-driven, reviewable changes with clear proposals, deltas, a
181181
- For data access in handlers use `IApplicationDbContextFactory` and per-operation context lifetime:
182182
- `await using var db = await _dbContextFactory.CreateAsync(cancellationToken);`
183183
- Follow MediatR pipeline behaviors, caching tags, and specification patterns.
184-
- Mirror the Contacts module for a new entitys DTOs, commands, queries, specs, security, and UI pages/components.
184+
- Mirror the Contacts module for a new entity's DTOs, commands, queries, specs, security, and UI pages/components.
185185

186186
5) Archive after deployment
187187
- Move `openspec/changes/<id>/` to `openspec/changes/archive/YYYY-MM-DD-<id>/` (or use the CLI archive helper if available).
@@ -236,7 +236,7 @@ The system SHALL allow users to create, edit, view, list, and delete customers w
236236
Tips
237237
- Use Contacts as the reference implementation for structure and conventions.
238238
- Add menu entries in `src/Server.UI/Services/Navigation/MenuService.cs`.
239-
- Define permissions under `Permissions.<Module>` and theyll be picked up during seeding.
239+
- Define permissions under `Permissions.<Module>` and they'll be picked up during seeding.
240240

241241
## 🔧 Code Generation
242242

src/Application/Application.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFramework>net9.0</TargetFramework>
3+
<TargetFramework>net10.0</TargetFramework>
44
<RootNamespace>CleanArchitecture.Blazor.Application</RootNamespace>
55
<AssemblyName>CleanArchitecture.Blazor.Application</AssemblyName>
66
<ImplicitUsings>enable</ImplicitUsings>
@@ -21,10 +21,10 @@
2121

2222
<PackageReference Include="FluentValidation" Version="12.1.0" />
2323
<PackageReference Include="FluentValidation.DependencyInjectionExtensions" Version="12.1.0" />
24-
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="9.0.10" />
25-
<PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="9.0.10" />
24+
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="10.0.0-rc.2.25502.107" />
25+
<PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="10.0.0-rc.2.25502.107" />
2626
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
27-
<PackageReference Include="Hangfire.Core" Version="1.8.21" />
27+
<PackageReference Include="Hangfire.Core" Version="1.8.22" />
2828
<PackageReference Include="ZiggyCreatures.FusionCache" Version="2.4.0" />
2929

3030
</ItemGroup>
@@ -34,4 +34,4 @@
3434
<ItemGroup>
3535
<Folder Include="Common\Interfaces\MultiTenant\" />
3636
</ItemGroup>
37-
</Project>
37+
</Project>

src/Domain/Domain.csproj

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<RootNamespace>CleanArchitecture.Blazor.Domain</RootNamespace>
66
<AssemblyName>CleanArchitecture.Blazor.Domain</AssemblyName>
77
<ImplicitUsings>enable</ImplicitUsings>
@@ -11,23 +11,23 @@
1111

1212
<ItemGroup>
1313
<PackageReference Include="MediatR" Version="12.5.0" />
14-
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.10" />
15-
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.10" />
14+
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.0-rc.2.25502.107" />
15+
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.0-rc.2.25502.107" />
1616
<PackageReference Include="EntityFrameworkCore.Exceptions.PostgreSQL" Version="8.1.3" />
1717
<PackageReference Include="EntityFrameworkCore.Exceptions.Sqlite" Version="8.1.3" />
1818
<PackageReference Include="EntityFrameworkCore.Exceptions.SqlServer" Version="8.1.3" />
19-
<PackageReference Include="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="9.0.10" />
20-
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" />
21-
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.10" />
22-
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.10" />
23-
<PackageReference Include="EFCore.NamingConventions" Version="9.0.0" />
24-
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="9.0.10" />
25-
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.10" />
26-
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.10">
19+
<PackageReference Include="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="10.0.0-rc.2.25502.107" />
20+
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0-rc.2" />
21+
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0-rc.2.25502.107" />
22+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.0-rc.2.25502.107" />
23+
<PackageReference Include="EFCore.NamingConventions" Version="10.0.0-rc.2" />
24+
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="10.0.0-rc.2.25502.107" />
25+
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.0-rc.2.25502.107" />
26+
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0-rc.2.25502.107">
2727
<PrivateAssets>all</PrivateAssets>
2828
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2929
</PackageReference>
30-
<PackageReference Include="Microsoft.Extensions.Identity.Core" Version="9.0.10" />
30+
<PackageReference Include="Microsoft.Extensions.Identity.Core" Version="10.0.0-rc.2.25502.107" />
3131
</ItemGroup>
3232

33-
</Project>
33+
</Project>

src/Infrastructure/Infrastructure.csproj

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFramework>net9.0</TargetFramework>
3+
<TargetFramework>net10.0</TargetFramework>
44
<RootNamespace>CleanArchitecture.Blazor.Infrastructure</RootNamespace>
55
<AssemblyName>CleanArchitecture.Blazor.Infrastructure</AssemblyName>
66
<ImplicitUsings>enable</ImplicitUsings>
@@ -9,12 +9,12 @@
99
</PropertyGroup>
1010
<ItemGroup>
1111

12-
<PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="9.0.10" />
13-
<PackageReference Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="9.0.10" />
14-
<PackageReference Include="Minio" Version="6.0.5" />
15-
<PackageReference Include="QuestPDF" Version="2025.7.4" />
12+
<PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="10.0.0-rc.2.25502.107" />
13+
<PackageReference Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="10.0.0-rc.2.25502.107" />
14+
<PackageReference Include="Minio" Version="7.0.0" />
15+
<PackageReference Include="QuestPDF" Version="2025.12.0-alpha3" />
1616
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
17-
<PackageReference Include="Serilog.Sinks.MSSqlServer" Version="9.0.2" />
17+
<PackageReference Include="Serilog.Sinks.MSSqlServer" Version="9.0.3-dev-00153" />
1818
<PackageReference Include="Serilog.Sinks.Postgresql.Alternative" Version="4.2.0" />
1919
<PackageReference Include="Serilog.Sinks.Async" Version="2.1.0" />
2020
<PackageReference Include="Serilog.Sinks.Console" Version="6.1.1" />

src/Migrators/Migrators.MSSQL/Migrators.MSSQL.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
<AssemblyName>CleanArchitecture.Blazor.Migrators.MSSQL</AssemblyName>
@@ -17,4 +17,4 @@
1717
<Folder Include="Migrations\" />
1818
</ItemGroup>
1919

20-
</Project>
20+
</Project>

src/Migrators/Migrators.PostgreSQL/Migrators.PostgreSQL.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
<AssemblyName>CleanArchitecture.Blazor.Migrators.PostgreSQL</AssemblyName>
@@ -17,4 +17,4 @@
1717
<Folder Include="Migrations\" />
1818
</ItemGroup>
1919

20-
</Project>
20+
</Project>

0 commit comments

Comments
 (0)