Upgrade to dotnet10 - #1288
Merged
Merged
Conversation
* 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
Removes some warnings
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
force-pushed
the
feature/dotnet10-upgrade
branch
from
August 24, 2026 13:28
3b935c8 to
80ebdd2
Compare
JackLewis-digirati
approved these changes
Aug 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this change?
Upgrade to dotnet10, resolves #1239
ImageSharpreplaced withNetVips, which uses libvips. Originally due to formers licensing change but in hindsight libvips is a better fit for our use case.nullnow, rather than empty collections so added handling for those.LocalStackFixturehealth check, without this the image could report as ready before some of the svcs (e.g. s3) was readyConfiguration Changes
Note
This PR introduces configuration changes.
MEDIATR_LICENSE_KEYorLUCKYPENNY_LICENSE_KEYnullMediatr 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.