Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update project dependencies (#9860) #9871

Merged
merged 1 commit into from
Feb 12, 2025
Merged

Conversation

ysmoradi
Copy link
Member

@ysmoradi ysmoradi commented Feb 12, 2025

closes #9860

Summary by CodeRabbit

  • Chores
    • Upgraded numerous framework and library dependencies across multiple components to enhance performance, stability, and compatibility.
    • Updated development tools, build dependencies, and SDK configurations for improved consistency.
  • Tests
    • Refreshed testing frameworks to ensure more reliable and robust test execution.

@ysmoradi ysmoradi requested a review from msynk February 12, 2025 13:51
Copy link

coderabbitai bot commented Feb 12, 2025

Walkthrough

The changes update dependency versions across multiple projects. Most package references in various *.csproj files have been incremented from version 9.0.1 to 9.0.2—with some Maui and WebView2 packages moving from 9.0.30 to 9.0.40—and testing SDKs adjusted accordingly. Several package.json files now use esbuild 0.25.0 and sass 1.84.0 instead of earlier versions. Global configuration files (global.json) have been updated to a newer SDK version and modified rollForward policies. In addition, new using directives and updated package versions have been added to Directory-level props files.

Changes

File(s) Change Summary
src/Besql/…/*.csproj, src/BlazorUI/…/*.csproj, src/Bswup/…/*.csproj, src/Bup/…/*.csproj, src/Websites/…/*.csproj Updated package references: Most libraries (e.g., Microsoft.AspNetCore.Components.*, EntityFrameworkCore, testing SDKs) upgraded from 9.0.1 to 9.0.2; Maui-related packages from 9.0.30 to 9.0.40; WebView2 also updated.
src/BlazorUI/…/package.json, src/Bswup/…/package.json, src/Bup/…/package.json, src/Websites/…/package.json DevDependencies updated: esbuild from 0.24.2 to 0.25.0 and sass from 1.83.4 to 1.84.0.
src/global.json, src/Templates/…/global.json SDK version changes: Updated from 9.0.100/9.0.102 to 9.0.200 and modified rollForward policies (e.g., from “latestPatch” to “latestFeature”).
src/Templates/Boilerplate/…/Directory.Build.props, Directory.Packages.props, Directory.Packages8.props Added new using directives and updated package versions across dependency management files.

Poem

I'm a bunny, hopping through our code so fine,
Upgrading versions one hop at a time,
From csproj to package.json, I cheer with delight,
SDKs and props glow in the new light,
With every update, my whiskers do twitch—
A joyful dance in our version-rich niche! 🐰


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 332071e and 5565ad5.

⛔ Files ignored due to path filters (12)
  • src/BlazorUI/Bit.BlazorUI.Assets/package-lock.json is excluded by !**/package-lock.json
  • src/BlazorUI/Bit.BlazorUI.Extras/package-lock.json is excluded by !**/package-lock.json
  • src/BlazorUI/Bit.BlazorUI.Icons/package-lock.json is excluded by !**/package-lock.json
  • src/BlazorUI/Bit.BlazorUI/package-lock.json is excluded by !**/package-lock.json
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/package-lock.json is excluded by !**/package-lock.json
  • src/Bswup/Bit.Bswup/package-lock.json is excluded by !**/package-lock.json
  • src/Bup/Bit.Bup/package-lock.json is excluded by !**/package-lock.json
  • src/Butil/Bit.Butil/package-lock.json is excluded by !**/package-lock.json
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/package-lock.json is excluded by !**/package-lock.json
  • src/Websites/Careers/src/Bit.Websites.Careers.Client/package-lock.json is excluded by !**/package-lock.json
  • src/Websites/Platform/src/Bit.Websites.Platform.Client/package-lock.json is excluded by !**/package-lock.json
  • src/Websites/Sales/src/Bit.Websites.Sales.Client/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (45)
  • src/Besql/Demo/Bit.Besql.Demo.Client/Bit.Besql.Demo.Client.csproj (1 hunks)
  • src/Besql/Demo/Bit.Besql.Demo/Bit.Besql.Demo.csproj (2 hunks)
  • src/BlazorUI/Bit.BlazorUI.Assets/package.json (1 hunks)
  • src/BlazorUI/Bit.BlazorUI.Extras/package.json (1 hunks)
  • src/BlazorUI/Bit.BlazorUI.Icons/package.json (1 hunks)
  • src/BlazorUI/Bit.BlazorUI.Tests/Bit.BlazorUI.Tests.csproj (1 hunks)
  • src/BlazorUI/Bit.BlazorUI/package.json (1 hunks)
  • src/BlazorUI/Demo/Bit.BlazorUI.Demo.Server/Bit.BlazorUI.Demo.Server.csproj (1 hunks)
  • src/BlazorUI/Demo/Bit.BlazorUI.Demo.Shared/Bit.BlazorUI.Demo.Shared.csproj (1 hunks)
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Bit.BlazorUI.Demo.Client.Core.csproj (1 hunks)
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/package.json (1 hunks)
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj (1 hunks)
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Bit.BlazorUI.Demo.Client.Windows.csproj (1 hunks)
  • src/Bswup/Bit.Bswup.Demo/Bit.Bswup.Demo.csproj (1 hunks)
  • src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/Bit.Bswup.NewDemo.Client.csproj (1 hunks)
  • src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.csproj (1 hunks)
  • src/Bswup/Bit.Bswup/package.json (1 hunks)
  • src/Bswup/FullDemo/Client/Bit.Bswup.Demo.Client.csproj (1 hunks)
  • src/Bswup/FullDemo/Server/Bit.Bswup.Demo.Server.csproj (1 hunks)
  • src/Bup/Bit.Bup.Demo/Bit.Bup.Demo.csproj (1 hunks)
  • src/Bup/Bit.Bup/package.json (1 hunks)
  • src/Bup/FullDemo/Client/Bit.Bup.Demo.Client.csproj (1 hunks)
  • src/Bup/FullDemo/Server/Bit.Bup.Demo.Server.csproj (1 hunks)
  • src/Butil/Bit.Butil/package.json (1 hunks)
  • src/Butil/Demo/Bit.Butil.Demo.Maui/Bit.Butil.Demo.Maui.csproj (1 hunks)
  • src/Butil/Demo/Bit.Butil.Demo.Web/Bit.Butil.Demo.Web.csproj (1 hunks)
  • src/Templates/BlazorEmpty/Bit.BlazorEmpty/global.json (1 hunks)
  • src/Templates/Boilerplate/Bit.Boilerplate/global.json (1 hunks)
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/package.json (1 hunks)
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props (1 hunks)
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages.props (3 hunks)
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages8.props (3 hunks)
  • src/Websites/Careers/src/Bit.Websites.Careers.Client/Bit.Websites.Careers.Client.csproj (2 hunks)
  • src/Websites/Careers/src/Bit.Websites.Careers.Client/package.json (1 hunks)
  • src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj (1 hunks)
  • src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj (1 hunks)
  • src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj (2 hunks)
  • src/Websites/Platform/src/Bit.Websites.Platform.Client/package.json (1 hunks)
  • src/Websites/Platform/src/Bit.Websites.Platform.Server/Bit.Websites.Platform.Server.csproj (1 hunks)
  • src/Websites/Platform/src/Bit.Websites.Platform.Shared/Bit.Websites.Platform.Shared.csproj (1 hunks)
  • src/Websites/Sales/src/Bit.Websites.Sales.Client/Bit.Websites.Sales.Client.csproj (2 hunks)
  • src/Websites/Sales/src/Bit.Websites.Sales.Client/package.json (1 hunks)
  • src/Websites/Sales/src/Bit.Websites.Sales.Server/Bit.Websites.Sales.Server.csproj (1 hunks)
  • src/Websites/Sales/src/Bit.Websites.Sales.Shared/Bit.Websites.Sales.Shared.csproj (1 hunks)
  • src/global.json (1 hunks)
✅ Files skipped from review due to trivial changes (26)
  • src/BlazorUI/Bit.BlazorUI.Icons/package.json
  • src/Bup/Bit.Bup/package.json
  • src/BlazorUI/Bit.BlazorUI.Assets/package.json
  • src/Bswup/Bit.Bswup/package.json
  • src/global.json
  • src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.Client/Bit.Bswup.NewDemo.Client.csproj
  • src/Butil/Bit.Butil/package.json
  • src/Bswup/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo/Bit.Bswup.NewDemo.csproj
  • src/Bswup/FullDemo/Server/Bit.Bswup.Demo.Server.csproj
  • src/Bup/FullDemo/Server/Bit.Bup.Demo.Server.csproj
  • src/Bup/Bit.Bup.Demo/Bit.Bup.Demo.csproj
  • src/Butil/Demo/Bit.Butil.Demo.Web/Bit.Butil.Demo.Web.csproj
  • src/BlazorUI/Bit.BlazorUI.Extras/package.json
  • src/Websites/Sales/src/Bit.Websites.Sales.Client/package.json
  • src/Websites/Sales/src/Bit.Websites.Sales.Client/Bit.Websites.Sales.Client.csproj
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/package.json
  • src/Websites/Platform/src/Bit.Websites.Platform.Client/package.json
  • src/Websites/Careers/src/Bit.Websites.Careers.Client/package.json
  • src/Besql/Demo/Bit.Besql.Demo.Client/Bit.Besql.Demo.Client.csproj
  • src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/package.json
  • src/BlazorUI/Demo/Bit.BlazorUI.Demo.Server/Bit.BlazorUI.Demo.Server.csproj
  • src/Bswup/FullDemo/Client/Bit.Bswup.Demo.Client.csproj
  • src/BlazorUI/Bit.BlazorUI/package.json
  • src/Bup/FullDemo/Client/Bit.Bup.Demo.Client.csproj
  • src/Websites/Sales/src/Bit.Websites.Sales.Shared/Bit.Websites.Sales.Shared.csproj
  • src/Besql/Demo/Bit.Besql.Demo/Bit.Besql.Demo.csproj
👮 Files not reviewed due to content moderation or server errors (4)
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages8.props
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages.props
  • src/Templates/Boilerplate/Bit.Boilerplate/global.json
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build and test
🔇 Additional comments (23)
src/Templates/BlazorEmpty/Bit.BlazorEmpty/global.json (1)

3-4: Verify the impact of SDK version and rollForward policy changes.

The SDK version update to 9.0.200 looks good and aligns with the PR's dependency update objectives. However, changing rollForward to latestFeature is a significant change that could affect build reproducibility:

  • latestPatch only allowed updates within patch versions (9.0.x)
  • latestFeature allows updates to newer feature versions (9.x.x)

This could impact CI/CD pipelines and development environments differently based on installed SDK versions.

Let's verify the SDK version compatibility and potential impact:

❌ Verification inconclusive

🏁 Script executed:

#!/bin/bash
# Check for installed .NET SDK versions and their support status
dotnet --list-sdks

# Check if the specific version is available in the official feed
curl -s https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/9.0/releases.json | jq '.releases[] | select(.sdkVersion=="9.0.200")'

Length of output: 261


🌐 Web query:

What is the latest .NET 9.0 SDK version and its release status?

💡 Result:

The latest .NET 9.0 SDK version is 9.0.102, released on January 14, 2025[4][10]. This release includes updated runtimes such as .NET Runtime 9.0.1 and ASP.NET Core Runtime 9.0.1[10].

Release Status

  • Support Status: Active Standard Term Support (STS), ending on May 12, 2026[3][5][6].
  • Latest Patch: Includes security updates and fixes from previous versions like 9.0.100 and 9.0.101[2][4].

To verify your installed SDK version:

$ dotnet --version
# Output example: 
# 9.0.102 (if up-to-date)[4][10]

For update instructions:

  1. Use dotnet sdk check to identify available patches[8].
  2. Install via OS-specific package managers or direct downloads[10].
  3. Update project files by setting <TargetFramework>net9.0</TargetFramework>[7].

The SDK supports cross-platform development on Android (API ≥21), iOS/iPadOS (v17+), macOS (v13+), and Linux distributions[3].

Citations:


Verify .NET SDK version consistency & potential rollForward impact

  • The global.json update correctly sets the SDK to "9.0.200", reflecting the intended dependency update.
  • Changing rollForward from "latestPatch" to "latestFeature" means that if the exact version isn’t available, the SDK resolution may pick up a newer feature release instead. This could introduce variability in build reproducibility and impact CI/CD pipelines if environments have different available SDK versions.
  • Note that the web query indicates the latest .NET 9.0 SDK is reported as "9.0.102". Since the script for checking installed SDKs did not produce output (due to the absence of the dotnet command), please manually verify that version "9.0.200" is available and intended for use in all relevant environments.
src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props (3)

71-86: LGTM! Well-organized global using directives.

The added using directives are logically grouped and provide essential namespaces for the project:

  1. System namespaces for core functionality
  2. Microsoft.Extensions namespaces for dependency injection and configuration
  3. Project-specific Boilerplate namespaces

71-86: LGTM! Well-organized namespace imports.

The added using directives are logically grouped and cover essential namespaces for security, serialization, data annotations, dependency injection, configuration, and localization. This will help reduce code verbosity across the project.


71-86: LGTM! Good additions to global using directives.

The added using directives cover commonly used namespaces for authentication, serialization, data annotations, dependency injection, and localization. This will help reduce boilerplate code across the project.

src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages8.props (3)

13-98: LGTM! Consistent package version updates.

The changes update multiple packages from 8.0.12 to 8.0.13, maintaining consistency across related packages. Test packages are also updated to their latest stable versions.


13-98: LGTM! Consistent package version updates.

The changes update multiple packages to their latest stable versions:

  • ASP.NET Core packages to 8.0.13
  • Entity Framework Core packages to 8.0.13
  • Test packages to their latest versions (MSTest 3.7.3, Playwright 1.50.0)

13-98: Verify compatibility of updated package versions.

The package updates appear to be patch version updates (8.0.12 → 8.0.13) which typically contain bug fixes and security patches. Let's verify these versions:

✅ Verification successful

🌐 Web query:

What is the latest version of Microsoft.AspNetCore.Components.WebAssembly for .NET 8?

💡 Result:

The latest version of Microsoft.AspNetCore.Components.WebAssembly for .NET 8 is 9.x, but this targets .NET 9. For .NET 8, use Microsoft.AspNetCore.Components.WebAssembly.Server v9.x or earlier versions explicitly targeting .NET 8[1][3][4][7][10].

Key details:

  • NuGet Package: Microsoft.AspNetCore.Components.WebAssembly.Server
  • Latest Version: 9.x (targets .NET Core Hosting Bundle)[1][3][10]
  • Compatibility:
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.x" />
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.x" />

Upgrade Steps:

1️⃣ Update .csproj references to target .NET Core Hosting Bundle:
xml <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.x" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.x" />

2️⃣ Ensure all dependencies align with .NET Core Hosting Bundle[3][4][7].

For detailed migration guidance from .NET Core Hosting Bundle, see Migrate from ASP.NET Core in .NET Core Hosting Bundle[1].

Citations:


🌐 Web query:

Are there any known issues with Microsoft.EntityFrameworkCore version 8.0.13?

💡 Result:

Microsoft.EntityFrameworkCore 8.0.13 has several known considerations and potential issues based on its dependencies and framework requirements:

Compatibility and Framework Requirements

  • Requires .NET 8 SDK/Runtime
    EF Core 8.x (including 8.0.13) only runs on .NET 8[7][9]. Projects targeting older frameworks (e.g., .NET Framework or .NET Core ≤7) will fail unless migrated.

Breaking Changes

  1. SQL Server Compatibility
    Queries using OPENJSON require SQL Server ≥2016 or compatibility level ≥130[9]. Older databases may throw errors unless configured with:
    o.UseCompatibilityLevel(120) // For EF Core 8
  2. Scaffolding Navigation Names
    Navigation names generated from composite foreign keys no longer use column prefixes, potentially requiring manual adjustments[9].

Tooling Issues

  • dotnet-ef Installation Failures
    Installing dotnet-ef globally requires .NET 8 SDK[8]. Without it, installations fail with NU1202 errors:
    error NU1202: Package dotnet-ef is not compatible with net80
    

Migration Challenges

  • Runtime Errors During Upgrades
    Mixed package versions (e.g., Microsoft.EntityFrameworkCore.InMemory v7.x with EF Core v8.x) cause assembly conflicts[6]. Ensure all EF-related packages align to 8.x versions[4][6].

Platform Limitations

  • Azure SQL/Modern SQL Server Required
    Features like hierarchy IDs require Microsoft.EntityFrameworkCore.SqlServer.HierarchyId and compatible database engines[10]. Legacy systems may lack support.

For detailed mitigation strategies for breaking changes, refer to Microsoft's EF Core Migration Guide[9].

Citations:


Compatibility Verification: The updated package versions are appropriate for the .NET 8 environment.

  • Microsoft.AspNetCore.Components.WebAssembly: For .NET 8, the file’s use of version 8.0.13 is suitable. Although newer (9.x) versions exist, they target .NET 9, so sticking to 8.0.13 avoids compatibility issues.
  • Microsoft.EntityFrameworkCore (8.0.13): This patch update is designed for .NET 8. The known considerations mostly relate to ensuring the correct .NET 8 SDK/Runtime is in use, and no critical issues affect typical projects.
src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Packages.props (3)

13-101: LGTM! Comprehensive package version updates.

The changes update:

  1. Core packages from 9.0.1 to 9.0.2
  2. MAUI packages from 9.0.30 to 9.0.40
  3. Test packages to their latest stable versions

13-101: LGTM! Comprehensive package version updates.

The changes update multiple packages to their latest versions:

  • ASP.NET Core packages to 9.0.2
  • Entity Framework Core packages to 9.0.2
  • MAUI packages to 9.0.40

Since these are preview versions of .NET 9, let's verify their stability:

✅ Verification successful

🌐 Web query:

What is the latest preview version of .NET 9 and its stability status?

💡 Result:

The latest stable release of .NET 9 is version 9.0, officially launched on November 12, 2024 as its General Availability (GA) release[5][9]. This marks the end of the preview/RC phase, with Microsoft confirming it as a production-ready release supported by a go-live license[2][5].

Key details about its stability and finalization:

  • Performance/stability: Includes final optimizations from RC phases like improved startup times for containerized apps[8], JIT compiler enhancements[8], and ARM64 code generation improvements[1]
  • Security: Features like expanded NuGet vulnerability auditing (now covering transitive dependencies)[1] and MSBuild integrity checks[1]
  • Supported workloads: Production-ready support for ASP.NET Core, Blazor, MAUI, AI integration tools, and cloud-native development patterns[5][8]

While no new preview versions exist post-GA, Microsoft has already begun sharing early plans for .NET 10 through its public roadmap[9].

Citations:


.NET 9 is now a GA release, confirming the stability of these package versions.

  • The web query confirms that .NET 9 reached General Availability (GA) on November 12, 2024.
  • This means that the packages updated to versions like 9.0.2 and 9.0.40 in the file are now based on a stable, production-ready release rather than preview builds.

13-101: Verify stability of .NET 9 preview package versions.

The package updates are from 9.0.1 to 9.0.2 which are preview versions of .NET 9. Let's verify these versions:

✅ Verification successful

🌐 Web query:

What is the current status of .NET 9? Is it in preview or released?

💡 Result:

.NET 9 has been released and is now generally available as of November 12, 2024[6][7]. Here’s a breakdown of its status:

Release Timeline

  • Preview phases: Ran from August[2] through October[8] 2024, with Preview 7 releasing in August[5].
  • General Availability (GA): Officially launched on November 12, 2024[6][7].
  • Servicing updates: The latest update is 9.0.2, released on February 11, 2025[1][4][10].

Key Details

  • Support lifecycle: Classified as a Standard Term Support (STS) release with support until May 12, 2026[3][5].
  • Current version:
    • Runtime: 9.0.2
    • SDK: 9.0.200[10]

The framework transitioned out of preview status after its final Release Candidate (RC) in October[8], which included a "go-live" license for production use before GA[8]. Developers can now access stable builds via official channels like the Download .NET website[1].

Citations:


Stable .NET 9 Package Versions – No Changes Needed

The web result confirms that .NET 9 is now generally available, and version 9.0.2 is the current stable release rather than a preview.

  • The packages in the file using version 9.0.2 are stable.
  • The review comment’s reference to preview versions is based on outdated information.
src/Templates/Boilerplate/Bit.Boilerplate/global.json (3)

3-4: Verify the implications of changing the rollForward policy.

The SDK version update from 9.0.100 to 9.0.200 is expected, but changing rollForward from latestPatch to latestFeature is significant:

  • latestPatch only allows patch version updates
  • latestFeature allows both feature and patch version updates

This change could potentially lead to unexpected SDK version resolution in CI/CD pipelines or developer machines.

✅ Verification successful

🌐 Web query:

What are the differences between latestPatch and latestFeature in global.json rollForward policy?

💡 Result:

The latestPatch and latestFeature roll-forward policies in global.json control how .NET SDK versions are selected when an exact match isn't available. Here's how they differ:


latestPatch

  • Scope: Stays within the same feature band (e.g., 8.0.1xx) but selects the highest available patch version.
  • Behavior:
    • Requires matching major, minor, and feature band (third version segment).
    • Rolls forward only to higher patch versions (fourth segment) within that feature band.
    • Fails if no higher patch exists[5][6].

Example:

{
  "sdk": {
    "version": "8.0.102",
    "rollForward": "latestPatch"
  }
}

This allows 8.0.1028.0.103 (same feature band) but rejects 8.0.2xx[5][6].


latestFeature

  • Scope: Moves to higher feature bands (e.g., 8.0.1xx8.0.2xx) under the same major/minor version while selecting their highest patch[5][6].
  • Behavior:
    • Requires matching major and minor versions only.
    • Rolls forward to newer feature bands (third segment) and their highest patches (fourth segment).
    • Fails if no newer feature band exists[5][6].

Example:

{
  "sdk": {
    "version": "8.0.102",
    "rollForward": "latestFeature"
  }
}

This allows 8.0.1028.0.203 (higher feature band)[5][6].


Key Differences

Policy Version Constraints Roll-Forward Flexibility Use Case
latestPatch Same major, minor, feature band Patch updates only Stability within a feature release
latestFeature Same major, minor Feature-band updates Access new features without major upgrades

For instance:

  • With latestPatch, specifying 8.0.102 will use 8.0.105 but not 8.0.201.
  • With latestFeature, specifying 8.0.102 could use 8.0.201 or 8.0.305, depending on installed SDKs[5][6].

Precedence & Compatibility

Both policies prioritize security patches by default but differ in how aggressively they adopt newer SDK features[3][6]. Use latestFeature for CI/CD pipelines requiring newer tooling or when working across multiple feature bands[7][8].

Citations:


Implications of Changing rollForward Policy

  • latestPatch restricts updates strictly to patch-level changes within the same feature band (i.e., matching major, minor, and feature segments) ensuring stability.
  • latestFeature permits the roll-forward to higher feature bands (requiring only matching major and minor versions), which may introduce new features not present in the original release.
  • This change means that environments (CI/CD pipelines or developer machines) might unexpectedly resolve to a newer SDK version with additional features, potentially impacting compatibility or behavior if the codebase isn’t tested against these changes.

3-4: Consider the implications of the rollForward policy change.

The changes include:

  1. SDK version update to 9.0.200, which aligns with the package updates.
  2. rollForward policy change from "latestPatch" to "latestFeature", which is more aggressive.

The new "latestFeature" policy will automatically use newer feature versions of the SDK. While this ensures you get the latest features, it might introduce unexpected changes. Consider if "latestPatch" would be more suitable for maintaining stability.

Let's verify the implications:

✅ Verification successful

🌐 Web query:

What are the differences between latestPatch and latestFeature in .NET SDK's rollForward policy?

💡 Result:

The latestPatch and latestFeature policies in .NET SDK’s rollForward configuration control how SDK versions are selected during builds or runtime. Here’s a breakdown of their differences:

Policy Behavior Scope of Update Example Use Case
latestPatch Selects the highest patch version within the specified feature band (e.g., 8.0.1xx) Patch-level updates only Security fixes or critical patches without adopting new tooling features
latestFeature Selects the highest feature band (e.g., 8.0.3xx) and its highest patch version Feature-band + patch updates Accessing new SDK tooling features (e.g., MSBuild/NuGet updates) without major changes

Key Differences:

  1. Scope

    • latestPatch: Restricted to patch versions within a fixed feature band (e.g., 8.0.1008.0.102).
    • latestFeature: Rolls forward to higher feature bands (e.g., 8.0.1008.0.300) while also selecting their highest patch[4][7].
  2. Failure Conditions

    • latestPatch: Fails if no matching patch exists in the specified feature band[4].
    • latestFeature: Fails only if no higher feature band exists within the same major/minor version[4].
  3. Use Cases

    • Use latestPatch for stability when you want only security/patches without tooling changes[4].
    • Use latestFeature to adopt newer SDK tooling features (e.g., C# compiler updates) without requiring a major/minor version bump[7].

Example Configuration:

{
  "sdk": {
    "version": "8.0.302",
    "rollForward": "latestFeature"
  }
}

This config allows using any higher 8.0.x SDK (e.g., 8.0.400) but not cross into 8.1.x or 9.x.x[4][7].

By contrast:

{
  "sdk": {
    "version": "8.0.302",
    "rollForward": "latestPatch"
  }
}

Restricts updates to patches within 8.0.3xx (e.g., 8.0.305)[4].

Citations:


Review Implications on RollForward Policy Change

  • The updated configuration in src/Templates/Boilerplate/Bit.Boilerplate/global.json now specifies SDK version "9.0.200" with "rollForward": "latestFeature".
  • The latestFeature setting allows roll forward not only within the patch level but also across feature bands. This means that if a newer feature version (e.g., moving from 9.0.200 to 9.0.300) becomes available, the SDK will automatically use it.
  • By contrast, the latestPatch policy restricts updates to only patch-level changes within the same feature band, enhancing stability by preventing potential feature-level modifications.
  • While the latestFeature option provides access to new tooling and compiler improvements, it might also introduce unexpected changes that could affect stability. Developers should ensure that this behavior aligns with their application's reliability requirements.

3-4: Consider the implications of using latestFeature rollForward policy.

While updating the SDK version is good, changing rollForward from latestPatch to latestFeature makes version resolution more permissive:

  • latestPatch only rolls forward to the latest patch version (9.0.x)
  • latestFeature can roll forward to the latest feature version (9.x.x)

This could potentially lead to unexpected behavior if a new feature version is released with breaking changes.

✅ Verification successful

🌐 Web query:

What are the differences between rollForward policies in .NET SDK's global.json?

💡 Result:

The rollForward policies in .NET SDK's global.json determine how the SDK selects versions when executing CLI commands. These policies balance compatibility with access to newer features or patches. Below are key differences between available policies:


Policy Descriptions

Policy Behavior Use Case
patch Uses highest patch version within specified major/minor/feature band if exact version missing[4][6]. Maintain stability while allowing security patches (default for exact versions)[4].
feature Rolls forward to next feature band (e.g., 8.0.2xx → 8.0.3xx) if missing[3][4]. Adopt new tooling features within same major/minor version[3].
minor Default behavior if no policy specified[6]. Uses next higher minor version if requested minor missing; otherwise applies LatestPatch[1][6]. Balance compatibility with minor updates[6].
major Rolls to next higher major version if missing; uses minor policy if major exists[1][6]. Allow breaking changes cautiously[6].
latestPatch Forces highest patch version available for specified SDK[4][6]. Critical security/stability fixes without minor updates[6].
latestFeature Selects latest feature band within same major/minor (e.g., 8.0.401 → 8.0.502)[3][4]. Access latest tooling improvements without major changes[8].
latestMinor Uses highest minor version under specified major (e.g., 7.x → 8.x not allowed)[4][6]. Leverage non-breaking minor updates[8].
latestMajor Selects highest installed SDK regardless of version (e.g., 7.x → 9.x)[4][6][8]. Prioritize bleeding-edge features over compatibility[8].
disable Strictly uses specified version; no roll-forward[1][6]. Testing specific versions (not recommended for production)[6].

Key Notes

  1. Precedence: Policies follow this priority order:
    *.runtimeconfig.jsonDOTNET_ROLL_FORWARD env variable → --roll-forward CLI arg[6].
  2. Pre-release SDKs: Requires allowPrerelease: true in global.json + environment variable DOTNET_ROLL_FORWARD_TO_PRERELEASE=1[1][4].
  3. Default Behavior:
    • If no global.json, uses latest installed SDK[8].
    • If global.json specifies a version without rollForward, defaults to latestPatch[4].

Example Configurations

// Use latest 8.x SDK with prereleases allowed
{
  "sdk": {
    "version": "8.0.100",
    "rollForward": "latestMajor",
    "allowPrerelease": true
  }
}

// Lock to 7.x feature band but allow patches
{
  "sdk": {
    "version": "7.0.200",
    "rollForward": "latestFeature"
  }
}

Understanding these policies helps manage SDK compatibility across development environments while balancing stability and access to updates[4][6][8]. For production systems, latestPatch or minor are often safest; for CI/CD pipelines testing multiple versions, latestMajor may be appropriate[3][8].

Citations:


Clarification on Using latestFeature in global.json

The latestFeature roll-forward policy is considerably more permissive than latestPatch. With latestFeature, the SDK can roll forward to a newer feature band (e.g., from 9.0.200 to a higher 9.0.x version that may include additional tool improvements) rather than limiting updates strictly to patch versions. This may introduce breaking changes if a new feature release behaves differently. Please ensure that this level of flexibility aligns with your project's stability and compatibility requirements.

src/BlazorUI/Bit.BlazorUI.Tests/Bit.BlazorUI.Tests.csproj (1)

17-17: Verify test SDK version compatibility.

The update of Microsoft.NET.Test.Sdk from 17.12.0 to 17.13.0 appears to be a minor version bump. Let's verify the latest stable version.

✅ Verification successful

🌐 Web query:

What is the latest stable version of Microsoft.NET.Test.Sdk?
Are there any breaking changes in Microsoft.NET.Test.Sdk 17.13.0?

💡 Result:

The latest stable version of Microsoft.NET.Test.Sdk is 17.13.0, as confirmed by its NuGet listing [9].

Breaking Changes in 17.13.0

Key considerations for compatibility:

  1. Dropped support for end-of-life .NET versions:

    • Projects targeting net6.0 (or older frameworks) must either:
      • Pin their Microsoft.NET.Test.Sdk dependency to 17.13.0 explicitly, or
      • Update their target framework to net8+ [1][7].
    • This does not affect:
      • Running tests from .NET Framework 4.6.2 projects [1].
      • Using newer Visual Studio or .NET SDKs with existing projects [1].
  2. Infrastructure updates:

    • Build system migrated to use Win11/macOS14 images and removed legacy components like xcopy-msbuild [1].
    • Added support for RISC-V64, UWP .NET 9, and improved terminal logging [1][6].

For most users, this release focuses on security/stability improvements rather than disruptive changes [4][9]. Projects already targeting supported frameworks (net8/net9) can upgrade seamlessly.

Citations:


Test SDK version update verified as current and compatible.

  • Microsoft.NET.Test.Sdk 17.13.0 is confirmed as the latest stable release.
  • No breaking changes affect supported target frameworks for this project, aside from the noted scenario with net6.0 (or older) targets.
src/Websites/Platform/src/Bit.Websites.Platform.Shared/Bit.Websites.Platform.Shared.csproj (1)

17-19: Verify version consistency across projects.

The update of Microsoft.Extensions.* packages and System.Text.Json from 9.0.1 to 9.0.2 appears consistent with other projects. Let's verify all related packages are updated.

✅ Verification successful

🏁 Script executed:

#!/bin/bash
# Check for any remaining 9.0.1 versions of Microsoft.Extensions.* and System.Text.Json
echo "Checking for outdated package versions..."
rg "Include=\"Microsoft\.Extensions.*\" Version=\"9\.0\.1\"" -l
rg "Include=\"System\.Text\.Json\" Version=\"9\.0\.1\"" -l

Length of output: 211


Version consistency confirmed across projects.

The search for any remaining references to version 9.0.1 returned no results, indicating that all package references for Microsoft.Extensions.* and System.Text.Json have been successfully updated to 9.0.2.

src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj (1)

17-19: Package updates are consistent.

The version updates for Microsoft.Extensions.* packages and System.Text.Json match those in other projects, maintaining consistency across the solution.

src/BlazorUI/Demo/Bit.BlazorUI.Demo.Shared/Bit.BlazorUI.Demo.Shared.csproj (1)

16-19: Package updates are consistent and complete.

The version updates include all relevant Microsoft.Extensions.* packages and System.Text.Json, maintaining consistency with other projects in the solution.

src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj (1)

10-12: Package updates are consistent!

The package versions match those in other server projects.

src/Websites/Platform/src/Bit.Websites.Platform.Server/Bit.Websites.Platform.Server.csproj (1)

10-12: Package updates are consistent!

The package versions match those in other server projects.

src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Bit.BlazorUI.Demo.Client.Windows.csproj (1)

41-43: Windows-specific package updates look good!

The updates are consistent with other projects:

  • ASP.NET Core Components Web updated to 9.0.2
  • WebView packages updated to latest versions
❌ Verification inconclusive

🌐 Web query:

What is the latest version of Microsoft.Web.WebView2 package?

💡 Result:

The latest stable version of the Microsoft.Web.WebView2 NuGet package is 1.0.2957.106, released on January 20, 2025[1][4]. This version introduced stable APIs for resolving WPF airspace issues via WebView2CompositionControl and addressed rendering bugs[1].

For developers opting for experimental features, the latest prerelease version is 1.0.3079-prerelease, released on January 24, 2025[1][6]. Key updates include:

  • Sandbox isolation improvements (IsolateSandboxedIframes)
  • Focus-related bug fixes for download dialogs
  • Enhanced accelerator key handling[1]

Both versions require matching WebView2 Runtime builds (132.x for stable, 134.x for prerelease)[1][6]. Developers can install these via Visual Studio's NuGet Package Manager by toggling Include prerelease when searching for Microsoft.Web.WebView2[2][5].

Citations:


Action: Verify the WebView2 package version

Based on the web query, the latest stable version of the Microsoft.Web.WebView2 NuGet package is 1.0.2957.106 while the project is using version 1.0.3065.39. This version number isn’t the latest stable nor the prerelease version. Please confirm if the higher package revision in the project is intentional due to consistency with other projects or additional internal testing.

  • Ensure consistency across projects if an update is desired.
  • If a rollback to the latest stable version is intended, update the package reference accordingly.
src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Bit.BlazorUI.Demo.Client.Core.csproj (1)

27-29: LGTM! Package versions are consistent.

The updates to Microsoft packages from 9.0.1 to 9.0.2 are consistent with each other and align with the PR objective.

src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj (1)

16-16: LGTM! Package versions are consistent.

The updates to Microsoft.AspNetCore.Components packages (WebAssembly and Web) from 9.0.1 to 9.0.2 are consistent with other files and align with the PR objective.

Also applies to: 39-39

src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj (1)

106-107: LGTM! MAUI package versions are consistent.

The updates to MAUI-related packages from 9.0.30 to 9.0.40 are consistent with each other and align with the PR objective.

Let's verify these are the latest stable versions:

❌ Verification inconclusive

🌐 Web query:

What is the latest stable version of Microsoft.Maui.Controls?

💡 Result:

The latest stable version of Microsoft.Maui.Controls is 9.0.30, as confirmed by its NuGet package listing and dependency details[1][4]. This release supports .NET 9 and targets platforms including Android 35.0, iOS 18.0, macOS Catalyst 18.0, Tizen 7.0, and Windows SDKs[1][3].

For developers upgrading from .NET MAUI 8.x, Microsoft recommends updating project files to reference .NET 9 packages and adjusting platform-specific build properties[6]. The focus of .NET MAUI in version 9 centers on quality improvements and expanded platform compatibility[6].

Citations:


Let's also verify the stable version of the Microsoft.AspNetCore.Components.WebView.Maui package.

What is the latest stable version of Microsoft.AspNetCore.Components.WebView.Maui?

Comment on lines +13 to +14
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.2" PrivateAssets="all" />
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify package version compatibility.

The update of ASP.NET Core packages from 9.0.1 to 9.0.2 appears to be a minor version bump. Let's verify the latest stable versions and any breaking changes.


🌐 Web query:

What is the latest stable version of Microsoft.AspNetCore.Components.WebAssembly?
Are there any breaking changes in ASP.NET Core 9.0.2?

💡 Result:

The latest stable version of Microsoft.AspNetCore.Components.WebAssembly is 9.0.1 (as shown on its NuGet page)[10].

For ASP.NET Core 9.x, there are several breaking changes documented:

Key ASP.NET Core Breaking Changes in .NET 9

Change Type Impact
HostBuilder enables ValidateOnBuild/ValidateScopes in development environments Behavioral Apps may fail startup validation if services have unresolved dependencies[2].
Dev cert export no longer creates folders automatically Behavioral Manual folder creation required before exporting certificates[2].
Middleware with multiple constructors Behavioral Middleware classes must now have exactly one public constructor[2].
Blazor WebSocket compression enabled by default Behavioral Reduces payload size but introduces frame-ancestors: 'self' CSP policy by default[5].
Legacy Mono/Emscripten APIs not globally exported Source incompatible Requires explicit imports for these APIs[2].

For full details, see [Breaking changes in .NET 9][2] and [ASP.NET Core migration guide][6].

No breaking changes specific to **ASP.NET Core 9.0.2 are documented in the provided sources (latest information covers general .NET 9.x changes).

Citations:


Action: Revisit the package version update.

  • The NuGet information indicates that the latest stable version of Microsoft.AspNetCore.Components.WebAssembly is 9.0.1, not 9.0.2.
  • Although there are general breaking changes noted across .NET 9.x, no breaking changes have been identified that are specific to version 9.0.2.
  • Consider reverting to 9.0.1 unless there’s a deliberate reason for targeting 9.0.2.

@msynk msynk merged commit 1c20873 into bitfoundation:develop Feb 12, 2025
3 checks passed
@ysmoradi ysmoradi deleted the 9860 branch February 12, 2025 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Project dependencies are outdated
2 participants