From ac1b7aab95e6d86aef96dfc58dd8e2f5b0a49037 Mon Sep 17 00:00:00 2001 From: KrzysztofPajak Date: Fri, 14 Aug 2026 19:23:10 +0200 Subject: [PATCH 1/3] Fix plugin tag helper discovery broken by ExcludeAssets=all Grand.Plugin.props referenced Grand.Web.Common with ExcludeAssets="all", which also strips compile-time assets. Razor's tag helper discovery for a plugin's Views relies on that compile-time reference, so no plugin (Theme.Modern included) could see host tag helpers (, , , etc.) - they were baked into the precompiled view as literal, unprocessed markup. The comment on the line already stated the intent - "referenced for its views and tag helpers, nothing is linked from it" - which is exactly what ExcludeAssets="runtime" does, matching every other reference in this file. Changed all -> runtime. Co-Authored-By: Claude Sonnet 5 --- src/Build/Grand.Plugin.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Build/Grand.Plugin.props b/src/Build/Grand.Plugin.props index d0ff5d048..d66712afb 100644 --- a/src/Build/Grand.Plugin.props +++ b/src/Build/Grand.Plugin.props @@ -43,8 +43,8 @@ - - + + From 5dcd2d988b1881e4c68b81bf7c7a30140d50eaf4 Mon Sep 17 00:00:00 2001 From: KrzysztofPajak Date: Fri, 14 Aug 2026 19:23:18 +0200 Subject: [PATCH 2/3] Pin .NET SDK to 10.0.301 to avoid a Razor tag helper regression The 10.0.400 feature-band SDK ships a different Razor compiler build (Microsoft.CodeAnalysis.Razor.Compiler.dll: 10.4.0-preview.26379.115 vs 10.0.301's 10.0.0-preview.26270.133) that fails to wire up tag helpers on Grand.Web's own precompiled views - , , etc. rendered as literal, unprocessed markup, so the storefront shipped with no CSS/JS at all. Reproduced by building the same source with sdk:10.0.301 (works) vs sdk:10.0.400 (broken), both from mcr.microsoft.com/dotnet/sdk:10.0. Dockerfile now pins the build image to 10.0.301 instead of the floating 10.0 tag. global.json's rollForward was "latestFeature", which is how a local build or CI runner with only the SDK's 400-band installed silently picks up the broken compiler even though the Dockerfile is pinned. Tightened to "latestPatch" against 10.0.301 so every environment building this repo gets the same, verified-working compiler. Co-Authored-By: Claude Sonnet 5 --- Dockerfile | 2 +- global.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index e2f11fe3f..92e51d43e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build-env +FROM mcr.microsoft.com/dotnet/sdk:10.0.301 AS build-env LABEL stage=build-env WORKDIR /app diff --git a/global.json b/global.json index f72210cac..fc61c41b6 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "10.0.100", - "rollForward": "latestFeature" + "version": "10.0.301", + "rollForward": "latestPatch" } } \ No newline at end of file From 1d222a7a66882404ae1d669b23312f8913fcddf9 Mon Sep 17 00:00:00 2001 From: KrzysztofPajak Date: Fri, 14 Aug 2026 19:37:09 +0200 Subject: [PATCH 3/3] Pin CI to .NET SDK 10.0.301, matching global.json/Dockerfile The floating 'dotnet-version: 10.0.x' / 'version: 10.0.x' inputs let actions/setup-dotnet and UseDotNet@2 install whatever the newest 10.0 patch is - currently 10.0.400, the feature-band with the broken Razor compiler this PR works around. Tightening global.json's rollForward to latestPatch (previous commit) without fixing this meant CI would install 10.0.400, then dotnet build would refuse to run against it (global.json now demands a 10.0.301.x SDK) - confirmed live on the Azure Pipelines run right after global.json landed: 'dotnet/sdk] ##[error]Error: ... failed with exit code 155' after installing 10.0.400. Pinning every CI SDK install to 10.0.301 keeps it consistent with the Dockerfile and global.json. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/aspnetcore.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/copilot-setup-steps.yml | 2 +- .github/workflows/grandnode.yml | 2 +- azure-pipelines.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/aspnetcore.yml b/.github/workflows/aspnetcore.yml index eb19bb993..6191b3761 100644 --- a/.github/workflows/aspnetcore.yml +++ b/.github/workflows/aspnetcore.yml @@ -16,7 +16,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v4 with: - dotnet-version: 10.0.x + dotnet-version: 10.0.301 - name: Restore run: dotnet restore ./GrandNode.sln - name: Build with dotnet diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 458655b21..008ff0133 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v4 with: - dotnet-version: 10.0.x + dotnet-version: 10.0.301 - name: Cache SonarQube Cloud packages uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 7e83529a6..b07719c68 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -24,4 +24,4 @@ jobs: - name: Setup .NET 10 SDK uses: actions/setup-dotnet@v3 with: - dotnet-version: '10.0.x' + dotnet-version: '10.0.301' diff --git a/.github/workflows/grandnode.yml b/.github/workflows/grandnode.yml index a24b1c6ea..5309c8f69 100644 --- a/.github/workflows/grandnode.yml +++ b/.github/workflows/grandnode.yml @@ -17,7 +17,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v4 with: - dotnet-version: 10.0.x + dotnet-version: 10.0.301 - name: Create mongoDB Docker container run: sudo docker run -d -p 27017:27017 mongo:latest - name: Wait for MongoDB to be ready diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 08e5f997e..6bdf32621 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -51,7 +51,7 @@ steps: - task: UseDotNet@2 displayName: 'Install .NET Core SDK 10' inputs: - version: '10.0.x' + version: '10.0.301' # Replaced NuGet tasks with dotnet CLI commands to fix Ubuntu 24.04 compatibility - task: DotNetCoreCLI@2