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 @@ + + +