Skip to content

Conversation

@rcaval
Copy link
Contributor

@rcaval rcaval commented Nov 27, 2025

User description

This PR:

  • Includes net10.0 as a target framework
  • Drops support for EOLs target frameworks (7 and 6)
  • Upgrades the library version to the latest in the corresponding target framework.
  • Upgrades the libraries in the example projects

PR Type

Enhancement


Description

  • Add .NET 10.0 and 9.0 target frameworks to main library

  • Upgrade all NuGet package dependencies to latest versions

  • Migrate solution file from .sln to modern .slnx format

  • Update SDK version requirement to .NET 10.0


Diagram Walkthrough

flowchart LR
  A["Main Library<br/>ConfIT.csproj"] -->|"Add net10.0<br/>net9.0 targets"| B["Multi-target<br/>Framework Support"]
  C["Solution File"] -->|"Migrate to<br/>slnx format"| D["Modern Solution<br/>Structure"]
  E["All Projects"] -->|"Upgrade to<br/>latest versions"| F["Updated<br/>Dependencies"]
  G["global.json"] -->|"Update to<br/>10.0.0"| H["SDK Version<br/>Requirement"]
Loading

File Walkthrough

Relevant files
Enhancement
2 files
ConfIT.csproj
Add net10.0 and net9.0 target frameworks                                 
+14/-8   
ConfIT.UnitTest.csproj
Upgrade target framework and dependencies                               
+5/-5     
Configuration changes
3 files
ConfIT.slnx
Migrate solution to modern slnx format                                     
+6/-0     
ConfIT.sln
Remove legacy solution file format                                             
+0/-28   
global.json
Update SDK version to 10.0.0                                                         
+1/-1     
Dependencies
4 files
JustAnotherService.csproj
Upgrade Swashbuckle.AspNetCore package                                     
+1/-1     
User.Api.csproj
Upgrade multiple NuGet package versions                                   
+11/-11 
User.ComponentTests.csproj
Upgrade test framework and tooling packages                           
+6/-6     
User.IntegrationTests.csproj
Upgrade test framework and tooling packages                           
+4/-4     

@qodo-code-review
Copy link

qodo-code-review bot commented Nov 27, 2025

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status:
No audit logic: The PR only updates target frameworks and package versions in project files without adding
or modifying application code that could implement or affect audit logging of critical
actions.

Referred Code
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
    </PropertyGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="10.0.0"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="9.0.11"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="8.0.22"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="7.0.20"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="6.0.36"/>
    </ItemGroup>
    <ItemGroup>
        <PackageReference Include="FluentAssertions" Version="7.2.0"/>


 ... (clipped 5 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status:
No identifiers: The diff contains only project configuration and package version changes with no new code
identifiers to assess for naming quality.

Referred Code
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
    </PropertyGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="10.0.0"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="9.0.11"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="8.0.22"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="7.0.20"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="6.0.36"/>
    </ItemGroup>
    <ItemGroup>
        <PackageReference Include="FluentAssertions" Version="7.2.0"/>


 ... (clipped 5 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status:
No runtime code: The PR modifies package versions and target frameworks only and introduces no executable
code where error handling or edge cases could be evaluated.

Referred Code
<Project Sdk="Microsoft.NET.Sdk.Web">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <AssemblyName>User.Api</AssemblyName>
        <RootNamespace>User.Api</RootNamespace>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="MediatR" Version="12.5.0" />
        <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.22" />
        <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
        <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.3.0" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.22" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.22" />
        <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
        <PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
        <PackageReference Include="Swashbuckle.AspNetCore" Version="8.1.4" />
        <PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="8.1.4" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.22">
          <PrivateAssets>all</PrivateAssets>


 ... (clipped 7 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status:
No user errors: Only package and framework configuration changes are present, with no user-facing error
handling changes to assess for sensitive detail exposure.

Referred Code
<Project Sdk="Microsoft.NET.Sdk.Web">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Swashbuckle.AspNetCore" Version="8.1.4" />
    </ItemGroup>

</Project>

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status:
Logging not shown: The changes do not add or modify application logging code, so compliance with secure
logging practices cannot be determined from this diff.

Referred Code
<Project Sdk="Microsoft.NET.Sdk.Web">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <AssemblyName>User.Api</AssemblyName>
        <RootNamespace>User.Api</RootNamespace>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="MediatR" Version="12.5.0" />
        <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.22" />
        <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
        <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.3.0" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.22" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.22" />
        <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
        <PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
        <PackageReference Include="Swashbuckle.AspNetCore" Version="8.1.4" />
        <PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="8.1.4" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.22">
          <PrivateAssets>all</PrivateAssets>


 ... (clipped 7 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status:
No input paths: Only framework targets and dependencies are updated, with no new input handling code to
review for validation, authorization, or secure data handling.

Referred Code
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
    </PropertyGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="10.0.0"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="9.0.11"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="8.0.22"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="7.0.20"/>
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
        <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="6.0.36"/>
    </ItemGroup>
    <ItemGroup>
        <PackageReference Include="FluentAssertions" Version="7.2.0"/>


 ... (clipped 5 lines)

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@qodo-code-review
Copy link

qodo-code-review bot commented Nov 27, 2025

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
Test project should cover all targets

The unit test project should be multi-targeted to match the main library's
supported frameworks (net6.0 to net10.0). This ensures complete test coverage
and prevents regressions on older frameworks.

Examples:

test/ConfIT.UnitTest/ConfIT.UnitTest.csproj [4]
    <TargetFramework>net10.0</TargetFramework>
src/ConfIT/ConfIT.csproj [3]
        <TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0</TargetFrameworks>

Solution Walkthrough:

Before:

// test/ConfIT.UnitTest/ConfIT.UnitTest.csproj
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    ...
  </PropertyGroup>
  ...
</Project>

After:

// test/ConfIT.UnitTest/ConfIT.UnitTest.csproj
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net10.0;net9.0;net8.0;net7.0;net6.0</TargetFrameworks>
    ...
  </PropertyGroup>
  ...
</Project>
Suggestion importance[1-10]: 9

__

Why: This is a critical suggestion as the PR introduces multi-targeting for the library but fails to update the test project to run against all targets, creating a significant testing gap and risk of regressions.

High
General
Update dependency for consistency and security

Update the Microsoft.AspNetCore.TestHost package version for the net7.0 target
framework from 7.0.20 to 7.0.21 for consistency with other dependency updates.

src/ConfIT/ConfIT.csproj [14-16]

 <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
-    <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="7.0.20"/>
+    <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="7.0.21"/>
 </ItemGroup>
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies an inconsistent dependency update for net7.0 that was likely overlooked, and proposes an update to align it with other framework updates in the PR.

Medium
Refine SDK versioning for build stability
Suggestion Impact:The commit updated global.json exactly as suggested: SDK version changed from 10.0.0 to 10.0.100 and rollForward from latestMajor to latestPatch.

code diff:

-    "version": "10.0.0",
-    "rollForward": "latestMajor",
+    "version": "10.0.100",
+    "rollForward": "latestPatch",

In global.json, change the SDK version to a feature band like 10.0.100 and set
rollForward to latestPatch to improve build stability.

src/global.json [1-7]

 {
   "sdk": {
-    "version": "10.0.0",
-    "rollForward": "latestMajor",
+    "version": "10.0.100",
+    "rollForward": "latestPatch",
     "allowPrerelease": false
   }
 }

[Suggestion processed]

Suggestion importance[1-10]: 7

__

Why: The suggestion provides a valid best-practice improvement for the global.json configuration to enhance build stability and predictability by using a more specific SDK version and a safer roll-forward policy.

Medium
  • Update

@techygarg techygarg merged commit 60cbbcb into techygarg:master Nov 27, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants