Skip to content

Upgrade 3 ASP.NET Core AdvancedSearch samples to net8.0#44

Open
devin-ai-integration[bot] wants to merge 4 commits into
masterfrom
devin/1780303011-net8-upgrade
Open

Upgrade 3 ASP.NET Core AdvancedSearch samples to net8.0#44
devin-ai-integration[bot] wants to merge 4 commits into
masterfrom
devin/1780303011-net8-upgrade

Conversation

@devin-ai-integration
Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration Bot commented Jun 1, 2026

Summary

Upgrades the first 3 ASP.NET Core AdvancedSearch sample projects from net6.0 to net8.0 and bumps their NuGet refs to .NET 8-compatible versions. All 3 build clean against the .NET 8 SDK (8.0.421). No code changes were needed — Program.cs/Startup.cs use no APIs removed in .NET 8.

Projects:

  • AspNetCore/Blazor/AdvancedSearch.BlazorServer/EqDemo.BlazorServer.AdvancedSearch.csproj
  • AspNetCore/React/AdvancedSearch/EqDemo.AspNetCoreReact.AdvancedSearch.csproj
  • AspNetCore/Vue3/AdvancedSearch.Server/AdvancedSearch.Server.csproj

Package changes (all 3)

Package Old New
Microsoft.EntityFrameworkCore.Sqlite / .SqlServer / .Diagnostics.EntityFrameworkCore 6.0.1 8.0.8
Microsoft.Data.SqlClient 2.1.7 5.2.0
Microsoft.IdentityModel.JsonWebTokens / System.IdentityModel.Tokens.Jwt 6.34.0 6.35.0

The IdentityModel bump (6.34.0 → 6.35.0) is required: Microsoft.Data.SqlClient 5.2.0 transitively depends on IdentityModel ≥ 6.35.0, which otherwise triggers an NU1605 package-downgrade error.

Per-project notes

  • Vue3: Microsoft.AspNetCore.SpaProxy 6.*-*8.*-*; removed the unused Microsoft.AspNetCore.SpaServices.Extensions (its usages in Startup.cs are all commented out and SpaProxy is already present).
  • React: kept Microsoft.AspNetCore.SpaServices.Extensions (bumped 6.0.1 → 8.0.8) instead of replacing it with SpaProxy. Startup.cs actively uses UseSpa, UseSpaStaticFiles, AddSpaStaticFiles, and ReactDevelopmentServer, which SpaProxy does not provide — replacing the package would break the build. SpaServices.Extensions remains supported on .NET 8.
  • Korzh.EasyQuery 7.4.0 packages left unchanged (compatible with .NET 8).

Transitive security pins

The .NET 8 package versions pull in vulnerable transitive dependencies (e.g. Microsoft.Data.SqlClient@5.2.0Azure.Identity@1.10.3 / Microsoft.Identity.Client@4.56.0). To keep the dependency closure clean, each project now pins the affected transitives to patched versions (per the NU1605 "reference the package directly" guidance):

Pinned package Version
Azure.Identity 1.11.4
Microsoft.Identity.Client 4.61.3
Microsoft.Extensions.Caching.Memory 8.0.8
System.Runtime.Caching (Blazor, React) 8.0.1
System.Formats.Asn1 (Vue3) 8.0.1
System.Text.Json 8.0.5

After these pins, Snyk's CLI (snyk test) reports ok: true, 0 vulnerable paths for all 3 projects — an improvement over master, which already had 2 high-severity issues.

CI note

The security/snyk and license/snyk SCM PR checks remain red. This is a pre-existing, repo-wide condition — every open PR fails them (e.g. #42 "15 tests failed", #40 "17 tests failed"). The SCM scanner parses .csproj without running dotnet restore and does not honor the direct transitive pins or NuGet lock files, so it reports the original transitive versions regardless. Snyk's own engine (CLI, which resolves the real graph) confirms these 3 projects are clean.

Scope is limited to these 3 .csproj files; no other projects were touched.

Link to Devin session: https://app.devin.ai/sessions/b2a23786f68d4542a3090609bd186bfb
Requested by: @iancmoritz


Devin Review

Status Commit
🟢 Reviewed afb19e3
Open in Devin Review (Staging)

- Blazor, React, Vue3 AdvancedSearch projects: net6.0 -> net8.0
- EF Core (Sqlite/SqlServer/Diagnostics) 6.0.1 -> 8.0.8
- Microsoft.Data.SqlClient 2.1.7 -> 5.2.0
- Bump IdentityModel JsonWebTokens/Tokens.Jwt 6.34.0 -> 6.35.0 to satisfy SqlClient 5.2.0
- Vue3: SpaProxy 6.*-* -> 8.*-*, drop unused SpaServices.Extensions
- React: keep SpaServices.Extensions (bumped to 8.0.8) since Startup uses UseSpa/ReactDevelopmentServer

Co-Authored-By: Ian Moritz <ian.moritz@cognition.ai>
@devin-ai-integration
Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

Copy link
Copy Markdown
Author

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 3 additional findings.

Open in Devin Review

Copy link
Copy Markdown

@staging-devin-ai-integration staging-devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review (Staging)
Debug

Playground

devin-ai-integration Bot and others added 3 commits June 1, 2026 08:44
Adds explicit PackageReferences (Azure.Identity 1.11.4, Microsoft.Identity.Client
4.61.3, Microsoft.Extensions.Caching.Memory 8.0.8, System.Runtime.Caching 8.0.1 /
System.Formats.Asn1 8.0.1, System.Text.Json 8.0.5) to override vulnerable transitive
versions pulled in by Microsoft.Data.SqlClient 5.2.0 and EF Core 8. All 3 projects
now report 0 Snyk vulnerable paths (master had 2 pre-existing high-severity issues).

Co-Authored-By: Ian Moritz <ian.moritz@cognition.ai>
…rsions

Snyk's PR/SCM scanner parses .csproj without restore and did not honor the
direct transitive pins. Committing packages.lock.json captures the unified
resolved versions (Azure.Identity 1.11.4, Microsoft.Identity.Client 4.61.3,
System.Text.Json 8.0.5, etc.) so the scan reports the patched closure.

Co-Authored-By: Ian Moritz <ian.moritz@cognition.ai>
Snyk's SCM PR check does not honor the lock files (it scans .csproj without
restore), so they had no effect on CI and added repo inconsistency. The direct
transitive pins are authoritative and keep Snyk's own engine at 0 issues.

Co-Authored-By: Ian Moritz <ian.moritz@cognition.ai>
Copy link
Copy Markdown

@staging-devin-ai-integration staging-devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 2 new potential issues.

View 3 additional findings in Devin Review.

Open in Devin Review (Staging)
Debug

Playground

Comment on lines +38 to +44
<ItemGroup>
<!-- Transitive dependency pins to address Snyk-reported vulnerabilities pulled in via Microsoft.Data.SqlClient / EF Core 8 -->
<PackageReference Include="Azure.Identity" Version="1.11.4" />
<PackageReference Include="Microsoft.Identity.Client" Version="4.61.3" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.8" />
<PackageReference Include="System.Runtime.Caching" Version="8.0.1" />
<PackageReference Include="System.Text.Json" Version="8.0.5" />
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🚩 Transitive pins only affect Snyk if the project is restored/resolved

The added direct references to Azure.Identity, Microsoft.Identity.Client, Microsoft.Extensions.Caching.Memory, System.Runtime.Caching/System.Formats.Asn1, and System.Text.Json are intended to override transitive versions for vulnerability scanning. Since this PR also removed previously-added NuGet lock files in the branch history, SCM-only scanners that do not perform a NuGet restore may still not observe the resolved transitive graph; this depends on the scanner configuration rather than the project code itself, so I did not flag it as a code bug.

Open in Devin Review (Staging)

Was this helpful? React with 👍 or 👎 to provide feedback.

Debug

Playground

<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.1" />
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="6.34.0" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="8.0.8" />
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🚩 React remains on the legacy SpaServices development-server path

The React project was retargeted to net8.0 but still references Microsoft.AspNetCore.SpaServices.Extensions and Startup.cs continues to call UseSpa/UseReactDevelopmentServer (AspNetCore/React/AdvancedSearch/Startup.cs:108-114). That is consistent with the current code and not an immediate bug from this diff, but it differs from sibling net8 SPA samples that use SpaProxy metadata, so maintainers may want to confirm this is the intended dev-server approach for the React sample.

Open in Devin Review (Staging)

Was this helpful? React with 👍 or 👎 to provide feedback.

Debug

Playground

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.

1 participant