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/_PublishDemoLocally.ps1 b/_PublishDemoLocally.ps1
index a28785899e..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
@@ -103,6 +116,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 |
@@ -120,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
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: |
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 89189d8cf6..cf5713263a 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
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..bde185933b 100644
--- a/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj
+++ b/src/Core/Microsoft.FluentUI.AspNetCore.Components.csproj
@@ -57,6 +57,18 @@
+
+
+
+
+
+
@@ -96,7 +108,7 @@
-
+
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
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 @@
+
+
+