From 1cb1edfe89a2f1d8961dadc03800f97d6d536b75 Mon Sep 17 00:00:00 2001 From: Denis VOITURON Date: Fri, 26 Jun 2026 16:44:32 +0200 Subject: [PATCH 1/8] Preparation for RC4 --- .github/workflows/build-core-lib.yml | 3 +++ Directory.Build.props | 2 +- eng/pipelines/build-all-lib.yml | 5 +++++ eng/pipelines/build-core-lib.yml | 3 +++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-core-lib.yml b/.github/workflows/build-core-lib.yml index ac69bcf8c9..9941182eaf 100644 --- a/.github/workflows/build-core-lib.yml +++ b/.github/workflows/build-core-lib.yml @@ -27,6 +27,9 @@ env: ./src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj ./src/Charts/Microsoft.FluentUI.AspNetCore.Components.Charts.csproj ./src/Tools/McpServer/Microsoft.FluentUI.AspNetCore.McpServer.csproj + ./src/Extensions/DataGrid.ODataAdapter/Microsoft.FluentUI.AspNetCore.Components.DataGrid.ODataAdapter.csproj + ./src/Extensions/DataGrid.EntityFrameworkAdapter/Microsoft.FluentUI.AspNetCore.Components.DataGrid.EntityFrameworkAdapter.csproj + ./src/Templates/Microsoft.FluentUI.AspNetCore.Templates.csproj TESTS: > ./tests/Core/Components.Tests.csproj ./tests/Tools/McpServer.Tests/Microsoft.FluentUI.AspNetCore.McpServer.Tests.csproj diff --git a/Directory.Build.props b/Directory.Build.props index 5c0fe788b4..cd621d46fa 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -28,7 +28,7 @@ 5.0.0 5.0.0 - RC.3 + RC.4 Microsoft © Microsoft Corporation. All rights reserved. diff --git a/eng/pipelines/build-all-lib.yml b/eng/pipelines/build-all-lib.yml index e330aa6d50..01d0264151 100644 --- a/eng/pipelines/build-all-lib.yml +++ b/eng/pipelines/build-all-lib.yml @@ -15,6 +15,11 @@ parameters: **/Microsoft.FluentUI.AspNetCore.Components.csproj **/Microsoft.FluentUI.AspNetCore.Components.Charts.csproj **/Microsoft.FluentUI.AspNetCore.McpServer.csproj + **/Microsoft.FluentUI.AspNetCore.Components.DataGrid.ODataAdapter.csproj + **/Microsoft.FluentUI.AspNetCore.Components.DataGrid.EntityFrameworkAdapter.csproj + **/Microsoft.FluentUI.AspNetCore.Templates.csproj + **/Components.Icons.Package.csproj + **/Components.Emoji.Package.csproj - name: Tests # List of Unit-Test projects to run default: | diff --git a/eng/pipelines/build-core-lib.yml b/eng/pipelines/build-core-lib.yml index ecaae8a2f3..85960ab5dc 100644 --- a/eng/pipelines/build-core-lib.yml +++ b/eng/pipelines/build-core-lib.yml @@ -46,6 +46,9 @@ parameters: **/Microsoft.FluentUI.AspNetCore.Components.csproj **/Microsoft.FluentUI.AspNetCore.Components.Charts.csproj **/Microsoft.FluentUI.AspNetCore.McpServer.csproj + **/Microsoft.FluentUI.AspNetCore.Components.DataGrid.ODataAdapter.csproj + **/Microsoft.FluentUI.AspNetCore.Components.DataGrid.EntityFrameworkAdapter.csproj + **/Microsoft.FluentUI.AspNetCore.Templates.csproj - name: Tests # List of Unit-Test projects to run default: | From 2518c7c9dfc9ce0711c50eb47a2c9ad26e3ca1ac Mon Sep 17 00:00:00 2001 From: Denis VOITURON Date: Fri, 26 Jun 2026 17:14:26 +0200 Subject: [PATCH 2/8] Add build step for FluentUI Charts to ensure DLL and XML generation --- .../McpServer/Microsoft.FluentUI.AspNetCore.McpServer.csproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Tools/McpServer/Microsoft.FluentUI.AspNetCore.McpServer.csproj b/src/Tools/McpServer/Microsoft.FluentUI.AspNetCore.McpServer.csproj index 788c3e7434..f66d36f3d2 100644 --- a/src/Tools/McpServer/Microsoft.FluentUI.AspNetCore.McpServer.csproj +++ b/src/Tools/McpServer/Microsoft.FluentUI.AspNetCore.McpServer.csproj @@ -173,6 +173,9 @@ + + + From a44399aace1e842e61ae813882e8b203c05c80d0 Mon Sep 17 00:00:00 2001 From: Denis VOITURON Date: Fri, 26 Jun 2026 17:23:00 +0200 Subject: [PATCH 3/8] Update ExampleNetVersion in XML configuration to match selected .NET version --- _PublishDemoLocally.ps1 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/_PublishDemoLocally.ps1 b/_PublishDemoLocally.ps1 index a28785899e..d66ff309a8 100644 --- a/_PublishDemoLocally.ps1 +++ b/_PublishDemoLocally.ps1 @@ -103,6 +103,17 @@ if ($node.InnerText -ne $NetVersion) { $xml.Save($resolvedPath) } +# Process ExampleNetVersion +$node = $xml.SelectSingleNode("//ExampleNetVersion") +if ($null -eq $node) { + throw "Matching ExampleNetVersion element not found." +} +if ($node.InnerText -ne $NetVersion) { + $node.InnerText = $NetVersion + Write-Host "Updated ExampleNetVersion temporarily." -ForegroundColor Cyan + $xml.Save($resolvedPath) +} + # Process TargetNetVersions $nodes = $xml.SelectNodes("//TargetNetVersions") $node = $nodes | From 3adfe793d0670655dcda938eb6d859c5d3eb003f Mon Sep 17 00:00:00 2001 From: Denis VOITURON Date: Fri, 26 Jun 2026 17:47:28 +0200 Subject: [PATCH 4/8] Refactor publish script to clean build artifacts more efficiently and update project build steps for Core, Charts, and DocApiGen --- _PublishDemoLocally.ps1 | 69 +++++++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/_PublishDemoLocally.ps1 b/_PublishDemoLocally.ps1 index d66ff309a8..ff59679ec9 100644 --- a/_PublishDemoLocally.ps1 +++ b/_PublishDemoLocally.ps1 @@ -58,23 +58,36 @@ if ($publishChoice -eq "n") { # Clean previous build artifacts Write-Host "👉 Cleaning previous build artifacts (bin and obj)..." -ForegroundColor Yellow -dotnet clean Microsoft.FluentUI-v5.slnx - -if (Test-Path "./examples/Demo/FluentUI.Demo/bin") { - Remove-Item -Path "./examples/Demo/FluentUI.Demo/bin" -Recurse -Force -} - -if (Test-Path "./examples/Demo/FluentUI.Demo/obj") { - Remove-Item -Path "./examples/Demo/FluentUI.Demo/obj" -Recurse -Force -} - -if (Test-Path "./src/Core/bin/") { - Remove-Item -Path "./src/Core/bin" -Recurse -Force +# Remove bin/obj folders directly instead of running 'dotnet clean'. +# A solution-level 'dotnet clean' requires a valid restore (project.assets.json) that +# matches the current target frameworks; if a previous build restored a different set +# of frameworks it fails with NETSDK1005. Deleting the folders is deterministic and +# immune to restore-state mismatches. +$artifactPaths = @( + "./examples/Demo/FluentUI.Demo/bin", + "./examples/Demo/FluentUI.Demo/obj", + "./examples/Demo/FluentUI.Demo.Client/bin", + "./examples/Demo/FluentUI.Demo.Client/obj", + "./examples/Tools/FluentUI.Demo.DocApiGen/bin", + "./examples/Tools/FluentUI.Demo.DocApiGen/obj", + "./src/Core/bin", + "./src/Core/obj", + "./src/Charts/bin", + "./src/Charts/obj", + "./src/Tools/McpServer/bin", + "./src/Tools/McpServer/obj" +) + +foreach ($artifactPath in $artifactPaths) { + if (Test-Path $artifactPath) { + Remove-Item -Path $artifactPath -Recurse -Force + } } -if (Test-Path "./src/Core/obj/") { - Remove-Item -Path "./src/Core/obj" -Recurse -Force -} +# Remove generated MCP documentation JSON files so they are regenerated during the build +Remove-Item -Path "./src/Tools/McpServer/FluentUIComponentsDocumentation.json", ` + "./src/Tools/McpServer/all-icons.json", ` + "./src/Tools/McpServer/chart-comments.json" -Force -ErrorAction SilentlyContinue $RootDir = $PSScriptRoot @@ -131,28 +144,30 @@ if ($node.InnerText -ne $NetVersion) { } if ($fullBuild) { - # Build the core project + # Build the Core and Charts projects to their DEFAULT output locations. + # The MCP Server build runs a documentation-generation target that loads these + # assemblies via an AssemblyDependencyResolver, so it requires the assembly, + # its .deps.json and its .xml files to exist at bin//. Write-Host "👉 Building Core project..." -ForegroundColor Yellow - dotnet build "./src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj" -c Release -o "./src/Core/bin/Publish" -f $NetVersion + dotnet build "./src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj" -c Release -f $NetVersion - # Copy Core build output to default location (so MCP Server project can resolve the dependency) - $defaultCoreOutput = "./src/Core/bin/Release/$NetVersion" - if (-not (Test-Path $defaultCoreOutput)) { - New-Item -ItemType Directory -Path $defaultCoreOutput -Force | Out-Null - } - Copy-Item -Path "./src/Core/bin/Publish/*" -Destination $defaultCoreOutput -Recurse -Force + Write-Host "👉 Building Charts project..." -ForegroundColor Yellow + dotnet build "./src/Charts/Microsoft.FluentUI.AspNetCore.Components.Charts.csproj" -c Release -f $NetVersion + + # Build the DocApiGen project (must exist for the MCP Server build to run it with --no-build) + Write-Host "👉 Building DocApiGen project..." -ForegroundColor Yellow + dotnet build ".\examples\Tools\FluentUI.Demo.DocApiGen\FluentUI.Demo.DocApiGen.csproj" -c Release -f $NetVersion # Build the MCP Server project Write-Host "👉 Building MCP Server project..." -ForegroundColor Yellow dotnet build "./src/Tools/McpServer/Microsoft.FluentUI.AspNetCore.McpServer.csproj" -c Release -o "./src/Tools/McpServer/bin/Publish" -f $NetVersion - # Build the DocApiGen project - Write-Host "👉 Building DocApiGen project..." -ForegroundColor Yellow - dotnet build ".\examples\Tools\FluentUI.Demo.DocApiGen\FluentUI.Demo.DocApiGen.csproj" -c Release -f $NetVersion + # Location of the Core build output used by the documentation generator + $coreOutput = "$RootDir/src/Core/bin/Release/$NetVersion" # Generate API documentation file Write-Host "👉 Generating API documentation..." -ForegroundColor Yellow - dotnet run -c Release --project ".\examples\Tools\FluentUI.Demo.DocApiGen\FluentUI.Demo.DocApiGen.csproj" --xml "$RootDir/src/Core/bin/Publish/Microsoft.FluentUI.AspNetCore.Components.xml" --dll "$RootDir/src/Core/bin/Publish/Microsoft.FluentUI.AspNetCore.Components.dll" --output "$RootDir/examples/Demo/FluentUI.Demo.Client/wwwroot/api-comments.json" --format json -f $NetVersion + dotnet run -c Release --project ".\examples\Tools\FluentUI.Demo.DocApiGen\FluentUI.Demo.DocApiGen.csproj" --xml "$coreOutput/Microsoft.FluentUI.AspNetCore.Components.xml" --dll "$coreOutput/Microsoft.FluentUI.AspNetCore.Components.dll" --output "$RootDir/examples/Demo/FluentUI.Demo.Client/wwwroot/api-comments.json" --format json -f $NetVersion # Generate MCP documentation file Write-Host "👉 Generating MCP documentation..." -ForegroundColor Yellow From 19a426a789102d62d1a2a8efbb0001b2c57bed3e Mon Sep 17 00:00:00 2001 From: Denis VOITURON Date: Fri, 26 Jun 2026 17:50:59 +0200 Subject: [PATCH 5/8] Exclude tsconfig.json from output and publish directories to prevent NETSDK1152 warnings --- ...soft.FluentUI.AspNetCore.Components.Charts.csproj | 12 ++++++++++++ .../Microsoft.FluentUI.AspNetCore.Components.csproj | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/Charts/Microsoft.FluentUI.AspNetCore.Components.Charts.csproj b/src/Charts/Microsoft.FluentUI.AspNetCore.Components.Charts.csproj index 055a2f038b..dda27e684e 100644 --- a/src/Charts/Microsoft.FluentUI.AspNetCore.Components.Charts.csproj +++ b/src/Charts/Microsoft.FluentUI.AspNetCore.Components.Charts.csproj @@ -57,6 +57,18 @@ + + + + + + diff --git a/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj b/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj index f1cdcb9b3c..51135299e4 100644 --- a/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj +++ b/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj @@ -57,6 +57,18 @@ + + + + + + From fbf10c5bcaf07b2166d9d46e1eeb841bbd2e5786 Mon Sep 17 00:00:00 2001 From: Denis VOITURON Date: Fri, 26 Jun 2026 18:12:21 +0200 Subject: [PATCH 6/8] Update migration documentation to include category and visibility settings for V4 and V5 guides --- .../Documentation/GetStarted/Migration/MigrationIndex.md | 5 +++++ .../Documentation/GetStarted/MigrationVersion5.md | 1 + 2 files changed, 6 insertions(+) diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/MigrationIndex.md b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/MigrationIndex.md index 19df498aa0..73656cb725 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/MigrationIndex.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/Migration/MigrationIndex.md @@ -1,9 +1,14 @@ --- title: Migration Guide V4 → V5 +order: 0020 route: /Migration +category: 10|Get Started +icon: WrenchScrewdriver hidden: false --- +# Migration Guide V4 → V5 + This guide helps you migrate from **Fluent UI Blazor V4** to **V5**. Each page below covers specific component changes, removed components, and new additions. diff --git a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/MigrationVersion5.md b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/MigrationVersion5.md index 8add74e0da..f62664553b 100644 --- a/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/MigrationVersion5.md +++ b/examples/Demo/FluentUI.Demo.Client/Documentation/GetStarted/MigrationVersion5.md @@ -4,6 +4,7 @@ order: 0020 category: 10|Get Started route: /MigrationV5 icon: WrenchScrewdriver +hidden: true --- # Changes introduced in this version From e241ef75ac6bab97018bec3fa1530f0cf5c64c03 Mon Sep 17 00:00:00 2001 From: Denis VOITURON Date: Fri, 26 Jun 2026 18:19:24 +0200 Subject: [PATCH 7/8] Add condition to PostBuild target for XML file copying based on TargetFramework --- src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj b/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj index 51135299e4..bde185933b 100644 --- a/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj +++ b/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj @@ -108,7 +108,7 @@ - + From e8ded259e8fa1543c552f43ce1a0f7dcf93ec5c2 Mon Sep 17 00:00:00 2001 From: Denis VOITURON Date: Fri, 26 Jun 2026 18:28:19 +0200 Subject: [PATCH 8/8] Update NoWarn property in Release configuration to include NU5128 warning --- src/Templates/Microsoft.FluentUI.AspNetCore.Templates.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Templates/Microsoft.FluentUI.AspNetCore.Templates.csproj b/src/Templates/Microsoft.FluentUI.AspNetCore.Templates.csproj index 1fdd0b6904..ed3b46a7a7 100644 --- a/src/Templates/Microsoft.FluentUI.AspNetCore.Templates.csproj +++ b/src/Templates/Microsoft.FluentUI.AspNetCore.Templates.csproj @@ -46,7 +46,7 @@ true True - 1701;1702;8669;1591 + $(NoWarn);1701;1702;8669;1591;NU5128 false true $(SolutionDir)artifacts