Skip to content

Upgrade to dotnet10 - #1288

Merged
donaldgray merged 9 commits into
developfrom
feature/dotnet10-upgrade
Aug 24, 2026
Merged

Upgrade to dotnet10#1288
donaldgray merged 9 commits into
developfrom
feature/dotnet10-upgrade

Conversation

@donaldgray

@donaldgray donaldgray commented Aug 21, 2026

Copy link
Copy Markdown
Member

What does this change?

Upgrade to dotnet10, resolves #1239

  • Bump all Docker images and csproj etc
  • Bump all nuget packages with exception of fluentAssertion due to licensing change
    • ImageSharp replaced with NetVips, which uses libvips. Originally due to formers licensing change but in hindsight libvips is a better fit for our use case.
    • AWS sdk update from v3->v4 returns null now, rather than empty collections so added handling for those.
  • Remove a couple of warnings, mostly nullability, add helper for getting strongly typed IConfiguration values.
  • Tweak LocalStackFixture health check, without this the image could report as ready before some of the svcs (e.g. s3) was ready

Configuration Changes

Note

This PR introduces configuration changes.

Service AppSetting Required? Description Default
API, Orchestrator, Portal MEDIATR_LICENSE_KEY or LUCKYPENNY_LICENSE_KEY Y License key for Mediatr null

Mediatr is now on 13+, which requires a license. To avoid baking into container image we can provide via envvars, see https://github.com/LuckyPennySoftware/MediatR#setting-the-license-key for details.

@donaldgray
donaldgray requested a review from a team as a code owner August 21, 2026 12:51
@donaldgray donaldgray changed the title Feature/dotnet10 upgrade Upgrade to dotnet10 Aug 21, 2026
donaldgray and others added 9 commits August 24, 2026 14:28
* Update TargetFramework to net10.0
* Update docker images
* Update gh actions
* Bump package versions to latest, with exceptions of FluentAssertions
and SixLabors.ImageSharp due to change in license
* Drops MediatR.Extensions.Microsoft.DependencyInjection, which has been
obsolete since MediatR v12
AWS SDK v3 -> v4:
 * collection properties on both requests and responses now default to
 null rather than empty, so listings and MediaConvert job details need
 null-safe access
 * several scalars became nullable (LastModified, IsTruncated,
 PartNumber, DurationInMs, etc)
 * HeadersCollection.ExpiresUtc is replaced by Expires
 * presigned URLs are signed with SigV4, so the proxy URL assertions
 match X-Amz-* query params instead of the old SigV2 ones

Swashbuckle 8 -> 10 (OpenAPI.NET v2): Microsoft.OpenApi.Models is now
Microsoft.OpenApi, ISchemaFilter.Apply takes IOpenApiSchema, and a "$ref" is a
distinct OpenApiSchemaReference type - which lets EnsureNotReference test the
type rather than inspect a Reference property.

FluentValidation 11 -> 12: ShouldHaveAnyValidationError is now
ShouldHaveValidationErrors.

Test fixtures:
 - LocalStackFixture waits on the container health endpoint before use
 - ProtagonistAppFactory sets dummy AWS credentials. Test hosts run as
   "Testing" so AWS:UseLocalStack is not honoured and the app registers real
   clients; v4 resolves credentials when the client is constructed rather than
   on first call, which would otherwise hit the real credential chain on any
   machine without ambient AWS credentials, CI included.
 - Post_CreatePriorityBatch_400_IfNonImage posted to /queue rather than
   /queue/priority, so it never exercised the non-image check it names and only
   passed while space 2 happened not to exist.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Couple of reasons
* Later versions of ImageSharp require a license
* libvips is much more suited to this job
* We only resize some thumbnails, ImageSharp provides much more
functionality than we need
These are now null by default, previously empty. Nullable types aren't
used in models
NetVips handles this natively. Also switch to IOptions<> not monitor,
to avoid issues with gating libvips on startup but then enabling
Previous code used libvips for build machine, not target. Linux docker
image built on windows would fail
@donaldgray
donaldgray force-pushed the feature/dotnet10-upgrade branch from 3b935c8 to 80ebdd2 Compare August 24, 2026 13:28
@donaldgray
donaldgray merged commit edba317 into develop Aug 24, 2026
8 checks passed
@donaldgray
donaldgray deleted the feature/dotnet10-upgrade branch August 24, 2026 14:22
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.

Dotnet 10

2 participants