Add configurable ResizeQuality for Resizetizer - #34559
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 34559Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 34559" |
There was a problem hiding this comment.
Pull request overview
This PR adds a configurable ResizeQuality option to Resizetizer so image resampling quality can be controlled via MSBuild metadata, while keeping existing behavior unchanged by default (Auto).
Changes:
- Introduces an internal
ResizeQualityenum and plumbs it throughResizeImageInfo→ tool creation → resize operations. - Replaces use of obsolete
SKPaint.FilterQualitywith explicitSKSamplingOptionsselection based onResizeQuality. - Adds unit + end-to-end tests validating parsing, sampling-option mapping, and output differences/regressions.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/SingleProject/Resizetizer/src/ResizeQuality.cs | Adds the ResizeQuality enum used to control resampling behavior. |
| src/SingleProject/Resizetizer/src/ResizeImageInfo.cs | Adds Quality property + parses ResizeQuality MSBuild metadata. |
| src/SingleProject/Resizetizer/src/SkiaSharpTools.cs | Adds quality-aware factory/ctor and maps ResizeQuality to SKSamplingOptions. |
| src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs | Passes quality through constructor chain; raster draw uses SamplingOptions. |
| src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs | Passes quality through; uses SamplingOptions for raster downscaling path. |
| src/SingleProject/Resizetizer/src/SkiaSharpImaginaryTools.cs | Updates base ctor call to include default quality. |
| src/SingleProject/Resizetizer/src/SkiaSharpAppIconTools.cs | Ensures app icon background/foreground tool creation respects info.Quality. |
| src/SingleProject/Resizetizer/src/Resizer.cs | Threads Info.Quality into tool creation. |
| src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs | Threads Info.Quality into adaptive icon resizing. |
| src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs | Adds tests for defaulting + case-insensitive parsing + invalid value handling. |
| src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs | Adds sampling-option mapping tests and functional output comparisons for raster images. |
| src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs | Adds sampling-option mapping tests and functional output comparisons for SVG downscaling. |
| src/SingleProject/Resizetizer/test/UnitTests/ResizetizeImagesTests.cs | Adds end-to-end MSBuild task pipeline tests for ResizeQuality. |
You can also share your feedback on Copilot code review. Take the survey.
There was a problem hiding this comment.
Pull request overview
This PR adds a configurable ResizeQuality option to the Resizetizer pipeline so callers can control image resampling behavior (via MSBuild item metadata), while preserving the existing default output.
Changes:
- Introduces an internal
ResizeQualityenum and plumbs it throughResizeImageInfoparsing and all resizing/tooling entry points. - Switches resampling control to
SKSamplingOptions(removing the obsoleteSKPaint.FilterQualityusage) and mapsResizeQualityvalues to the desired sampling options. - Adds unit and end-to-end tests covering parsing, sampling option mapping, and output equivalence/differences.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/SingleProject/Resizetizer/src/ResizeQuality.cs | Adds the new ResizeQuality enum used to select resampling behavior. |
| src/SingleProject/Resizetizer/src/ResizeImageInfo.cs | Adds Quality with default, and parses ResizeQuality from MSBuild metadata. |
| src/SingleProject/Resizetizer/src/SkiaSharpTools.cs | Plumbs ResizeQuality into constructors/factories and maps it to SKSamplingOptions; removes obsolete FilterQuality. |
| src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs | Threads quality through constructors so raster drawing uses the configured sampling. |
| src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs | Threads quality through constructors so SVG downscaling uses the configured sampling. |
| src/SingleProject/Resizetizer/src/SkiaSharpImaginaryTools.cs | Updates base constructor call to provide a default ResizeQuality for manufactured images. |
| src/SingleProject/Resizetizer/src/Resizer.cs | Ensures ResizeQuality flows into SkiaSharpTools.Create(...) when resizing. |
| src/SingleProject/Resizetizer/src/SkiaSharpAppIconTools.cs | Ensures app icon background/foreground tool creation passes through ResizeQuality. |
| src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs | Ensures adaptive icon background/foreground resizing passes through ResizeQuality. |
| src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs | Adds tests for defaulting and case-insensitive parsing of ResizeQuality metadata. |
| src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs | Adds tests validating sampling option mapping and output invariants/differences for raster resizing. |
| src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs | Adds tests validating sampling option mapping and output invariants/differences for SVG resizing. |
| src/SingleProject/Resizetizer/test/UnitTests/ResizetizeImagesTests.cs | Adds end-to-end MSBuild pipeline tests verifying metadata is respected and defaults preserve baseline behavior. |
You can also share your feedback on Copilot code review. Take the survey.
Code Review SummaryResizeQuality for Resizetizer — Adds Findings
Overall Assessment
Otherwise the design, test coverage, and backward compatibility story are solid. Review performed by Copilot CLI |
a438af9 to
28be2d7
Compare
Code Review — PR #34559Independent AssessmentWhat this changes: Adds configurable Target branch: Reconciliation with PR NarrativeAgreement: ✅ Code matches description. Addresses @mattleibow's feedback on #25686: uses custom enum (not deprecated Findings✅ Good — Correct SkiaSharp API usageThe old code relied on // SkiaSharpRasterTools.DrawUnscaled
canvas.DrawImage(img, 0, 0, SamplingOptions, Paint);
// SkiaSharpSvgTools.DrawUnscaled (downscale path)
canvas.DrawImage(img, 0, 0, SamplingOptions, Paint);SVG upscaling ( ✅ Good — Quality mappings are well-chosen
✅ Good — Backwards compatible
✅ Good — Clean constructor threadingQuality parameter added to all constructor chains consistently:
✅ Good — Incremental build support
✅ Good — Comprehensive tests (22 new)
💡 Observation —
|
28be2d7 to
6989901
Compare
🧪 PR Test EvaluationOverall Verdict: ✅ Tests are adequate This PR adds 37 new unit tests with excellent coverage of the core
📊 Expand Full EvaluationPR Test Evaluation ReportPR: #34559 — Add configurable ResizeQuality for Resizetizer Overall Verdict✅ Tests are adequate Strong unit test coverage of the core quality mapping, MSBuild metadata parsing, and pixel-level regression guarantees. Two minor gaps in coverage for the 1. Fix Coverage — ✅The tests trace directly to the changed code paths:
If the quality mapping 2. Edge Cases & Gaps —
|
| Test | Assertion | Quality |
|---|---|---|
| Sampling options mapping | Assert.Equal(new SKSamplingOptions(...), tools.SamplingOptions) |
✅ Exact match |
| Pixel identity (default == Auto) | Pixel-by-pixel loop Assert.Equal(pixel1, pixel2) |
✅ Very strong |
| Pixel difference | Assert.True(differentPixels > 0, ...) |
✅ Adequate with message |
| Output dimensions | Assert.Equal(256, resultImage.Width) |
✅ Specific |
| Enum parsing | Assert.Equal(expected, info.Quality) |
✅ Exact match |
Assertions are specific and meaningful throughout. The pixel-by-pixel equality for the regression test (DefaultQualityProducesIdenticalOutputToExplicitAuto) is particularly strong.
9. Fix-Test Alignment — ✅
Fix → Test mapping:
| Changed File | Test Coverage |
|---|---|
ResizeQuality.cs (new enum) |
Used in all test files ✅ |
ResizeImageInfo.cs (Quality property + parsing) |
ResizeImageInfoTests.ResizeQualityTests ✅ |
SkiaSharpTools.cs (sampling options switch) |
SkiaSharpRasterToolsTests.ResizeQualityTests, SkiaSharpSvgToolsTests.ResizeQualityTests ✅ |
SkiaSharpRasterTools.cs / SkiaSharpSvgTools.cs / SkiaSharpImaginaryTools.cs (constructors) |
Covered transitively ✅ |
Resizer.cs (passes quality through) |
Covered by E2E ResizetizeImagesTests ✅ |
SkiaSharpAppIconTools.cs (passes quality) |
|
AndroidAdaptiveIconGenerator.cs (passes quality) |
|
Microsoft.Maui.Resizetizer.After.targets (build invalidation) |
Recommendations
- (Nice-to-have) Add a quality test to
SkiaSharpAppIconToolsTests— Add a test that creates an app icon withResizeQuality=Fastestand verifies the output differs fromAuto. Since the existingSkiaSharpAppIconToolsTestsalready test pixel output, this would be a straightforward addition. - (Nice-to-have) Add SVG
BestvsAutopixel comparison — MirrorBestQualityProducesDifferentPixelOutputThanAutofromSkiaSharpRasterToolsTestsinSkiaSharpSvgToolsTeststo ensure SVG quality behaves as expected forBestmode. - (Low priority) Consider a
ResizeQualityE2E test for app icons — A test inResizetizeImagesTeststhat uses an app icon item withResizeQualityset would close the gap for theAndroidAdaptiveIconGeneratorcode path.
Warning
⚠️ Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
dc.services.visualstudio.com
To allow these domains, add them to the network.allowed list in your workflow frontmatter:
network:
allowed:
- defaults
- "dc.services.visualstudio.com"See Network Configuration for more information.
Note
🔒 Integrity filtering filtered 2 items
Integrity filtering activated and filtered the following items during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.
- pr:Add configurable ResizeQuality for Resizetizer #34559 (
pull_request_read: Resource 'pr:Add configurable ResizeQuality for Resizetizer #34559' has lower integrity than agent requires. Agent would need to drop integrity tags [unapproved:all approved:all] to trust this resource.) - #25686 (
search_pull_requests: Resource 'pr:made FilterQuality configurable for Resizetizer #25686' has lower integrity than agent requires. Agent would need to drop integrity tags [approved:all] to trust this resource.)
🧪 Test evaluation by Evaluate PR Tests
There was a problem hiding this comment.
Copilot's findings
Suppressed comments (3)
src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:127
- When the foreground file is missing, this up-to-date check always returns false (Resizer.IsUpToDate returns false for non-empty inputs that don't exist), so manufactured foregrounds will be regenerated every build even if the inputs file/output are unchanged. Pass a null/empty input when the file doesn't exist so incremental skipping still works for the manufactured case.
if (Resizer.IsUpToDate(new[] { foregroundFile }, destination, InputsFile, Logger, foregroundFile))
src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:169
- When the monochrome file is missing, this up-to-date check always returns false (Resizer.IsUpToDate returns false for non-empty inputs that don't exist), so manufactured monochrome assets will be regenerated every build even if the inputs file/output are unchanged. Pass a null/empty input when the file doesn't exist so incremental skipping still works for the manufactured case.
if (Resizer.IsUpToDate(new[] { monochromeFile }, destination, InputsFile, Logger, monochromeFile))
src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:85
- When the background file is missing, this up-to-date check always returns false (Resizer.IsUpToDate returns false for non-empty inputs that don't exist), so manufactured backgrounds will be regenerated every build even if the inputs file/output are unchanged. Pass a null/empty input when the file doesn't exist so incremental skipping still works for the manufactured case.
This issue also appears in the following locations of the same file:
- line 127
- line 169
if (Resizer.IsUpToDate(new[] { backgroundFile }, destination, InputsFile, Logger, backgroundFile))
- Files reviewed: 25/25 changed files
- Comments generated: 0 new
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ec56cb07-d0e4-49cf-90fc-7c86d816e36a
There was a problem hiding this comment.
Copilot's findings
Suppressed comments (1)
src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs:63
- In the rasterize-first path,
DrawPicture(svg.Picture)is used forBest/Fastest. That bypasses the configuredPaint(notablyIsAntialias = true), which can reduce edge quality compared to the existing behavior, even when no tint is involved. Consider still providing a paint for rasterization, but strip theColorFilteronly when needed to avoid double-applying tint.
cvn.Clear(SKColors.Transparent);
if (Quality == ResizeQuality.Auto)
cvn.DrawPicture(svg.Picture, Paint);
else
cvn.DrawPicture(svg.Picture);
- Files reviewed: 26/26 changed files
- Comments generated: 2
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ec56cb07-d0e4-49cf-90fc-7c86d816e36a
There was a problem hiding this comment.
Copilot's findings
Suppressed comments (1)
src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:85
- Resizer.IsUpToDate currently returns false when any declared input file does not exist. In the “manufacture” paths (e.g., backgroundExists/foregroundExists/monochromeExists == false), this means adaptive icon outputs will be regenerated on every build even when only the inputs file is unchanged, which regresses incremental build behavior and adds avoidable work. Consider passing an empty input list when the source file is missing so IsUpToDate can fall back to the inputs-file timestamp for the manufactured case (apply similarly to the foreground/monochrome checks below).
if (Resizer.IsUpToDate(new[] { backgroundFile }, destination, InputsFile, Logger, backgroundFile))
- Files reviewed: 29/29 changed files
- Comments generated: 0 new
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ec56cb07-d0e4-49cf-90fc-7c86d816e36a
There was a problem hiding this comment.
Copilot's findings
Suppressed comments (4)
src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:169
- When the monochrome file is missing (manufactured monochrome), this up-to-date check always returns false because IsUpToDate treats non-empty missing input files as out-of-date. That prevents incremental skipping and causes the monochrome part to be regenerated every build even when nothing changed.
if (Resizer.IsUpToDate(new[] { monochromeFile }, destination, InputsFile, Logger, monochromeFile))
src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:127
- When the foreground file is missing (manufactured foreground), this up-to-date check always returns false because IsUpToDate treats non-empty missing input files as out-of-date. That prevents incremental skipping and causes the foreground part to be regenerated every build even when nothing changed.
if (Resizer.IsUpToDate(new[] { foregroundFile }, destination, InputsFile, Logger, foregroundFile))
src/TestUtils/src/Microsoft.Maui.IntegrationTests/SimpleTemplateTest.cs:9
- This PR includes additional changes unrelated to Resizetizer ResizeQuality (e.g., skipping Avalonia template build scenarios). Please either document these in the PR description or split them into a separate PR to keep scope and rationale clear.
const string AvaloniaBuildSkipReason = "Avalonia packages are not available on dotnet-public. See https://github.com/dotnet/maui/pull/35950";
src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:85
- When the background file is missing (manufactured background), this up-to-date check always returns false because IsUpToDate treats non-empty missing input files as out-of-date. That prevents incremental skipping and causes the background part to be regenerated every build even when nothing changed.
This issue also appears in the following locations of the same file:
- line 127
- line 169
if (Resizer.IsUpToDate(new[] { backgroundFile }, destination, InputsFile, Logger, backgroundFile))
- Files reviewed: 29/29 changed files
- Comments generated: 0 new
This comment has been minimized.
This comment has been minimized.
AI Review Summary
🗂️ Review Sessions — click to expand🚦 Gate — Test Before & After FixGate Result:
|
| Test | Without Fix (expect FAIL) | With Fix (expect PASS) |
|---|---|---|
🧪 DispatcherTests DispatcherTests |
❌ PASS — 104s | ✅ PASS — 24s |
🧪 GenerateSplashAssetsTests GenerateSplashAssetsTests |
🛠️ BUILD ERROR | ❌ FAIL — 14s |
🧪 MainThreadBridgeTests MainThreadBridgeTests |
❌ PASS — 45s | ✅ PASS — 15s |
🧪 ResizeImageInfoTests ResizeImageInfoTests |
🛠️ BUILD ERROR | ✅ PASS — 4s |
🧪 ResizerTests ResizerTests |
🛠️ BUILD ERROR | ✅ PASS — 4s |
🧪 ResizetizeImagesTests ResizetizeImagesTests |
🛠️ BUILD ERROR | ✅ PASS — 21s |
🧪 SkiaSharpAppIconToolsTests SkiaSharpAppIconToolsTests |
🛠️ BUILD ERROR | |
🧪 SkiaSharpRasterToolsTests SkiaSharpRasterToolsTests |
🛠️ BUILD ERROR | |
🧪 SkiaSharpSvgToolsTests SkiaSharpSvgToolsTests |
🛠️ BUILD ERROR | |
📱 ModalTests ModalTests |
||
📱 TabbedPageTests TabbedPageTests |
🔴 Without fix — 🧪 DispatcherTests: PASS ❌ · 104s
(no coded error found; showing last 1200 chars)
(in 5.8 sec).
Restored /home/vsts/work/1/s/src/Controls/src/BindingSourceGen/Controls.BindingSourceGen.csproj (in 13 ms).
Test run for /home/vsts/work/1/s/artifacts/bin/Core.UnitTests/Debug/net11.0/Microsoft.Maui.UnitTests.dll (.NETCoreApp,Version=v11.0)
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 11.0.0-rc.1.26379.102)
[xUnit.net 00:00:00.16] Discovering: Microsoft.Maui.UnitTests
[xUnit.net 00:00:00.75] Discovered: Microsoft.Maui.UnitTests
[xUnit.net 00:00:00.76] Starting: Microsoft.Maui.UnitTests
Passed CreateTimerNonRepeatingDoesNotRepeat [1 s]
Passed TestImplementationHasDispatcher [1 ms]
Passed CreateTimerIsNotNull [< 1 ms]
Passed BackgroundThreadDoesNotHaveDispatcher [1 ms]
Passed DispatchDelayedIsNotImmediate [502 ms]
Passed BackgroundThreadDoesNotGetDispatcherFromMainThread [1 ms]
Passed DifferentDispatcherForDifferentThread [2 ms]
Passed SameDispatcherForSameThread [< 1 ms]
[xUnit.net 00:00:03.49] Finished: Microsoft.Maui.UnitTests
Passed CreateTimerRepeatingRepeats [1 s]
Test Run Successful.
Total tests: 9
Passed: 9
Total time: 4.5287 Seconds
🟢 With fix — 🧪 DispatcherTests: PASS ✅ · 24s
Determining projects to restore...
All projects are up-to-date for restore.
Test run for /home/vsts/work/1/s/artifacts/bin/Core.UnitTests/Debug/net11.0/Microsoft.Maui.UnitTests.dll (.NETCoreApp,Version=v11.0)
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.01] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 11.0.0-rc.1.26379.102)
[xUnit.net 00:00:00.30] Discovering: Microsoft.Maui.UnitTests
[xUnit.net 00:00:00.91] Discovered: Microsoft.Maui.UnitTests
[xUnit.net 00:00:00.94] Starting: Microsoft.Maui.UnitTests
Passed CreateTimerNonRepeatingDoesNotRepeat [1 s]
Passed TestImplementationHasDispatcher [6 ms]
Passed CreateTimerIsNotNull [5 ms]
Passed BackgroundThreadDoesNotHaveDispatcher [3 ms]
Passed DispatchDelayedIsNotImmediate [508 ms]
Passed BackgroundThreadDoesNotGetDispatcherFromMainThread [3 ms]
Passed DifferentDispatcherForDifferentThread [11 ms]
Passed SameDispatcherForSameThread [2 ms]
[xUnit.net 00:00:03.80] Finished: Microsoft.Maui.UnitTests
Passed CreateTimerRepeatingRepeats [1 s]
Test Run Successful.
Total tests: 9
Passed: 9
Total time: 4.9074 Seconds
🔴 Without fix — 🧪 GenerateSplashAssetsTests: 🛠️ BUILD ERROR · 5s
Error-relevant lines (filtered from the build log):
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(375,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(405,17): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(405,27): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(412,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(412,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(435,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(435,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(442,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(442,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(462,30): error CS0246: The type or namespace name 'ResizeQuality' could not be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(466,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
🟢 With fix — 🧪 GenerateSplashAssetsTests: FAIL ❌ · 14s
Error-relevant lines (filtered from the build log):
at SkiaSharp.SkiaApi.sk_compatpaint_new()
at SkiaSharp.SKPaint..ctor()
at Microsoft.Maui.Resizetizer.SkiaSharpTools..ctor(String filename, Nullable`1 baseSize, Nullable`1 backgroundColor, Nullable`1 tintColor, ResizeQuality quality, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpTools.cs:line 83
at Microsoft.Maui.Resizetizer.SkiaSharpSvgTools..ctor(String filename, Nullable`1 baseSize, Nullable`1 backgroundColor, Nullable`1 tintColor, ResizeQuality quality, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs:line 18
at Microsoft.Maui.Resizetizer.SkiaSharpTools.Create(Boolean isVector, String filename, Nullable`1 baseSize, Nullable`1 backgroundColor, Nullable`1 tintColor, ResizeQuality quality, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpTools.cs:line 65
at Microsoft.Maui.Resizetizer.SkiaSharpAppIconTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpAppIconTools.cs:line 24
at Microsoft.Maui.Resizetizer.GenerateSplashAssets.Execute() in /_/src/SingleProject/Resizetizer/src/GenerateSplashAssets.cs:line 27
at Microsoft.Maui.Resizetizer.Tests.GenerateSplashAssetsTests.SplashScreenResectsAlias(String alias, String outputImage) in /_/src/SingleProject/Resizetizer/test/UnitTests/GenerateSplashAssetsTests.cs:line 107
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
at InvokeStub_GenerateSplashAssetsTests.SplashScreenResectsAlias(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.Maui.Resizetizer.Tests.GenerateSplashAssetsTests.FileIsGenerated(String image, String color) in /_/src/SingleProject/Resizetizer/test/UnitTests/GenerateSplashAssetsTests.cs:line 50
at InvokeStub_GenerateSplashAssetsTests.FileIsGenerated(Object, Span`1)
at Microsoft.Maui.Resizetizer.SkiaSharpRasterTools..ctor(String filename, Nullable`1 baseSize, Nullable`1 backgroundColor, Nullable`1 tintColor, ResizeQuality quality, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs:line 17
at Microsoft.Maui.Resizetizer.Tests.GenerateSplashAssetsTests.ResizeQualityMetadataIsRespected() in /_/src/SingleProject/Resizetizer/test/UnitTests/GenerateSplashAssetsTests.cs:line 68
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
🔴 Without fix — 🧪 MainThreadBridgeTests: PASS ❌ · 45s
(no coded error found; showing last 1200 chars)
t.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 11.0.0-rc.1.26379.102)
[xUnit.net 00:00:00.26] Discovering: Microsoft.Maui.UnitTests
[xUnit.net 00:00:00.78] Discovered: Microsoft.Maui.UnitTests
[xUnit.net 00:00:00.79] Starting: Microsoft.Maui.UnitTests
Passed MauiAppBuild_BridgesDispatcherToMainThread [129 ms]
Passed SetCustomImpl_NullBeginInvoke_Throws [1 ms]
Passed WithCustomImpl_IsMainThread_ReturnsFalse [4 ms]
Passed WithCustomImpl_IsMainThread_UsesBackingImpl [< 1 ms]
Passed MauiAppBuild_BridgeUsesApplicationDispatcher [1 ms]
Passed WithoutCustomImpl_BeginInvoke_Throws [5 ms]
Passed MauiAppBuild_BeginInvoke_DispatchesToDispatcher [1 ms]
Passed SetCustomImpl_NullIsMainThread_Throws [2 ms]
Passed InvokeOnMainThreadAsync_Action_WorksThroughBridge [4 ms]
[xUnit.net 00:00:01.11] Finished: Microsoft.Maui.UnitTests
Passed ClearCustomImpl_RestoresThrowBehavior [3 ms]
Passed WithCustomImpl_BeginInvoke_CallsBackingImpl [< 1 ms]
Passed WithoutCustomImpl_IsMainThread_Throws [< 1 ms]
Passed BeginInvoke_WhenOnMainThread_InvokesDirectly [< 1 ms]
Test Run Successful.
Total tests: 13
Passed: 13
Total time: 2.2647 Seconds
🟢 With fix — 🧪 MainThreadBridgeTests: PASS ✅ · 15s
(no coded error found; showing last 1200 chars)
00:00:00.01] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 11.0.0-rc.1.26379.102)
[xUnit.net 00:00:00.27] Discovering: Microsoft.Maui.UnitTests
[xUnit.net 00:00:00.87] Discovered: Microsoft.Maui.UnitTests
[xUnit.net 00:00:00.88] Starting: Microsoft.Maui.UnitTests
Passed MauiAppBuild_BridgesDispatcherToMainThread [116 ms]
Passed SetCustomImpl_NullBeginInvoke_Throws [3 ms]
Passed WithCustomImpl_IsMainThread_ReturnsFalse [< 1 ms]
Passed WithCustomImpl_IsMainThread_UsesBackingImpl [< 1 ms]
Passed MauiAppBuild_BridgeUsesApplicationDispatcher [5 ms]
Passed WithoutCustomImpl_BeginInvoke_Throws [< 1 ms]
Passed MauiAppBuild_BeginInvoke_DispatchesToDispatcher [1 ms]
Passed SetCustomImpl_NullIsMainThread_Throws [< 1 ms]
Passed InvokeOnMainThreadAsync_Action_WorksThroughBridge [7 ms]
[xUnit.net 00:00:01.20] Finished: Microsoft.Maui.UnitTests
Passed ClearCustomImpl_RestoresThrowBehavior [< 1 ms]
Passed WithCustomImpl_BeginInvoke_CallsBackingImpl [2 ms]
Passed WithoutCustomImpl_IsMainThread_Throws [< 1 ms]
Passed BeginInvoke_WhenOnMainThread_InvokesDirectly [< 1 ms]
Test Run Successful.
Total tests: 13
Passed: 13
Total time: 2.2209 Seconds
🔴 Without fix — 🧪 ResizeImageInfoTests: 🛠️ BUILD ERROR · 4s
Error-relevant lines (filtered from the build log):
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(117,18): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(117,43): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(130,18): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(130,43): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(143,18): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(143,43): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(152,31): error CS0246: The type or namespace name 'ResizeQuality' could not be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(160,33): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizerTests.cs(36,25): error CS0117: 'Resizer' does not contain a definition for 'IsUpToDate' [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizerTests.cs(53,25): error CS0117: 'Resizer' does not contain a definition for 'IsUpToDate' [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizerTests.cs(69,24): error CS0117: 'Resizer' does not contain a definition for 'IsUpToDate' [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
🟢 With fix — 🧪 ResizeImageInfoTests: PASS ✅ · 4s
(no coded error found; showing last 1200 chars)
o") [< 1 ms]
Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityParsedFromTaskItem(metadataValue: "Best") [< 1 ms]
Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityCanBeSet(qualityName: "Auto") [< 1 ms]
Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityCanBeSet(qualityName: "Fastest") [< 1 ms]
Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityCanBeSet(qualityName: "Best") [< 1 ms]
[xUnit.net 00:00:00.38] Finished: Microsoft.Maui.Resizetizer.UnitTests
Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityDefaultsToAutoForUndefinedNumericValue [< 1 ms]
Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityDefaultsToAutoWhenNotSpecified [< 1 ms]
Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityDefaultsToAutoForInvalidValue [1 ms]
Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.DefaultQualityIsAuto [< 1 ms]
Test Run Successful.
Total tests: 30
Passed: 30
Total time: 0.7921 Seconds
🔴 Without fix — 🧪 ResizerTests: 🛠️ BUILD ERROR · 3s
Error-relevant lines (filtered from the build log):
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(518,25): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(556,15): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(556,25): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(563,15): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(563,25): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(598,11): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(598,21): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(631,11): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(631,21): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(654,30): error CS0246: The type or namespace name 'ResizeQuality' could not be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(658,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
🟢 With fix — 🧪 ResizerTests: PASS ✅ · 4s
Determining projects to restore...
All projects are up-to-date for restore.
Test run for /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/Microsoft.Maui.Resizetizer.UnitTests.dll (.NETCoreApp,Version=v11.0)
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 11.0.0-rc.1.26379.102)
[xUnit.net 00:00:00.08] Discovering: Microsoft.Maui.Resizetizer.UnitTests
[xUnit.net 00:00:00.24] Discovered: Microsoft.Maui.Resizetizer.UnitTests
[xUnit.net 00:00:00.25] Starting: Microsoft.Maui.Resizetizer.UnitTests
[xUnit.net 00:00:00.34] Finished: Microsoft.Maui.Resizetizer.UnitTests
Passed Microsoft.Maui.Resizetizer.Tests.ResizerTests.MultiInputCanBeUpToDateWhenSourceInputsAreEmpty [11 ms]
Passed Microsoft.Maui.Resizetizer.Tests.ResizerTests.MultiInputIsNotUpToDateWhenInputsFileIsMissing [6 ms]
Passed Microsoft.Maui.Resizetizer.Tests.ResizerTests.MultiInputIsNotUpToDateWhenDeclaredSourceInputIsMissing [1 ms]
Test Run Successful.
Total tests: 3
Passed: 3
Total time: 0.7902 Seconds
🔴 Without fix — 🧪 ResizetizeImagesTests: 🛠️ BUILD ERROR · 3s
Error-relevant lines (filtered from the build log):
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(99,31): error CS0246: The type or namespace name 'ResizeQuality' could not be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(107,33): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(117,18): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(117,43): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(130,18): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(130,43): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(143,18): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(143,43): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(152,31): error CS0246: The type or namespace name 'ResizeQuality' could not be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(160,33): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
🟢 With fix — 🧪 ResizetizeImagesTests: PASS ✅ · 21s
Error-relevant lines (filtered from the build log):
at Microsoft.Maui.Resizetizer.Resizer.get_Tools() in /_/src/SingleProject/Resizetizer/src/Resizer.cs:line 29
at Microsoft.Maui.Resizetizer.Resizer.Rasterize(DpiPath dpi, String destination) in /_/src/SingleProject/Resizetizer/src/Resizer.cs:line 136
at Microsoft.Maui.Resizetizer.Resizer.Resize(DpiPath dpi, String inputsFile) in /_/src/SingleProject/Resizetizer/src/Resizer.cs:line 127
at Microsoft.Maui.Resizetizer.ResizetizeImages.ProcessImageResize(ResizeImageInfo img, DpiPath[] dpis, ConcurrentBag`1 resizedImages) in /_/src/SingleProject/Resizetizer/src/ResizetizeImages.cs:line 245
at Microsoft.Maui.Resizetizer.ResizetizeImages.<>c__DisplayClass34_0.<ExecuteAsync>b__0(ResizeImageInfo img) in /_/src/SingleProject/Resizetizer/src/ResizetizeImages.cs:line 73
at Microsoft.Maui.Resizetizer.Tests.ResizetizeImagesTests.ExecuteForPlatformApp.BasicImageProcessingWorks(String image) in /_/src/SingleProject/Resizetizer/test/UnitTests/ResizetizeImagesTests.cs:line 79
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
at Microsoft.Maui.Resizetizer.SkiaSharpImaginaryTools..ctor(Nullable`1 backgroundColor, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpImaginaryTools.cs:line 14
at Microsoft.Maui.Resizetizer.SkiaSharpTools.CreateImaginary(Nullable`1 backgroundColor, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpTools.cs:line 70
at Microsoft.Maui.Resizetizer.AndroidAdaptiveIconGenerator.ProcessBackground(List`1 results, DirectoryInfo fullIntermediateOutputPath) in /_/src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:line 102
at Microsoft.Maui.Resizetizer.AndroidAdaptiveIconGenerator.Generate() in /_/src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:line 56
at Microsoft.Maui.Resizetizer.ResizetizeImages.ProcessAppIcon(ResizeImageInfo img, ConcurrentBag`1 resizedImages) in /_/src/SingleProject/Resizetizer/src/ResizetizeImages.cs:line 182
at Microsoft.Maui.Resizetizer.ResizetizeImages.<>c__DisplayClass34_0.<ExecuteAsync>b__0(ResizeImageInfo img) in /_/src/SingleProject/Resizetizer/src/ResizetizeImages.cs:line 64
at Microsoft.Maui.Resizetizer.Tests.ResizetizeImagesTests.ExecuteForAndroid.SingleRasterAppIconWithOnlyPathSucceedsWithoutVectors(String name, String alias, String outputName) in /_/src/SingleProject/Resizetizer/test/UnitTests/ResizetizeImagesTests.cs:line 745
at InvokeStub_ExecuteForAndroid.SingleRasterAppIconWithOnlyPathSucceedsWithoutVectors(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at InvokeStub_ExecuteForPlatformApp.BasicImageProcessingWorks(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Unhandled exception. System.TypeInitializationException: The type initializer for 'SkiaSharp.SKObject' threw an exception.
at SkiaSharp.SkiaApi.sk_version_get_milestone()
at SkiaSharp.SkiaSharpVersion.get_Native()
at SkiaSharp.SkiaSharpVersion.CheckNativeLibraryCompatible(Boolean throwIfIncompatible)
at SkiaSharp.SKObject..cctor()
at System.Runtime.CompilerServices.InitHelpers.CallClassConstructor(Void* cctor, Void* instantiatingArg, Exception* pException)
at SkiaSharp.SKObject.DeregisterHandle(IntPtr handle, SKObject instance)
at SkiaSharp.SKObject.set_Handle(IntPtr value)
at SkiaSharp.SKNativeObject.Dispose(Boolean disposing)
at SkiaSharp.SKObject.Dispose(Boolean disposing)
at SkiaSharp.SKPaint.Dispose(Boolean disposing)
at SkiaSharp.SKNativeObject.Finalize()
at System.GC.RunFinalizers()
🔴 Without fix — 🧪 SkiaSharpAppIconToolsTests: 🛠️ BUILD ERROR · 3s
Error-relevant lines (filtered from the build log):
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(412,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(412,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(435,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(435,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(442,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(442,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(462,30): error CS0246: The type or namespace name 'ResizeQuality' could not be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(466,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizerTests.cs(36,25): error CS0117: 'Resizer' does not contain a definition for 'IsUpToDate' [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizerTests.cs(53,25): error CS0117: 'Resizer' does not contain a definition for 'IsUpToDate' [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizerTests.cs(69,24): error CS0117: 'Resizer' does not contain a definition for 'IsUpToDate' [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
🟢 With fix — 🧪 SkiaSharpAppIconToolsTests: ⚠️ ENV ERROR · 76s
Error-relevant lines (filtered from the build log):
at SkiaSharp.SkiaApi.sk_compatpaint_new()
at SkiaSharp.SKPaint..ctor()
at Microsoft.Maui.Resizetizer.SkiaSharpTools..ctor(String filename, Nullable`1 baseSize, Nullable`1 backgroundColor, Nullable`1 tintColor, ResizeQuality quality, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpTools.cs:line 83
at Microsoft.Maui.Resizetizer.SkiaSharpSvgTools..ctor(String filename, Nullable`1 baseSize, Nullable`1 backgroundColor, Nullable`1 tintColor, ResizeQuality quality, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs:line 18
at Microsoft.Maui.Resizetizer.SkiaSharpTools.Create(Boolean isVector, String filename, Nullable`1 baseSize, Nullable`1 backgroundColor, Nullable`1 tintColor, ResizeQuality quality, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpTools.cs:line 65
at Microsoft.Maui.Resizetizer.SkiaSharpAppIconTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpAppIconTools.cs:line 24
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpAppIconToolsTests.Resize.BasicTest(Double dpi, Double fgScale, String bg, String fg, Int32 exWidth, Int32 exHeight) in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpAppIconToolsTests.cs:line 61
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.MethodBaseInvoker.InvokeWithManyArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at InvokeStub_Resize.BasicTest(Object, Span`1)
at Microsoft.Maui.Resizetizer.SkiaSharpRasterTools..ctor(String filename, Nullable`1 baseSize, Nullable`1 backgroundColor, Nullable`1 tintColor, ResizeQuality quality, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs:line 17
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpAppIconToolsTests.Resize.DiffPropoprtionWithBaseSize(Double dpi, Double fgScale, String bg, String fg, Int32 exWidth, Int32 exHeight) in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpAppIconToolsTests.cs:line 147
Unhandled exception. System.TypeInitializationException: The type initializer for 'SkiaSharp.SKObject' threw an exception.
at SkiaSharp.SkiaApi.sk_version_get_milestone()
at SkiaSharp.SkiaSharpVersion.get_Native()
at SkiaSharp.SkiaSharpVersion.CheckNativeLibraryCompatible(Boolean throwIfIncompatible)
at SkiaSharp.SKObject..cctor()
at System.Runtime.CompilerServices.InitHelpers.CallClassConstructor(Void* cctor, Void* instantiatingArg, Exception* pException)
at SkiaSharp.SKObject.DeregisterHandle(IntPtr handle, SKObject instance)
at SkiaSharp.SKObject.set_Handle(IntPtr value)
at SkiaSharp.SKNativeObject.Dispose(Boolean disposing)
at SkiaSharp.SKObject.Dispose(Boolean disposing)
at SkiaSharp.SKPaint.Dispose(Boolean disposing)
at SkiaSharp.SKNativeObject.Finalize()
at System.GC.RunFinalizers()
at InvokeStub_Resize.DiffPropoprtionWithBaseSize(Object, Span`1)
🔴 Without fix — 🧪 SkiaSharpRasterToolsTests: 🛠️ BUILD ERROR · 3s
Error-relevant lines (filtered from the build log):
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(375,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(405,17): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(405,27): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(412,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(412,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(435,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(435,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(442,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(442,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(462,30): error CS0246: The type or namespace name 'ResizeQuality' could not be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(466,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
🟢 With fix — 🧪 SkiaSharpRasterToolsTests: ⚠️ ENV ERROR · 73s
Error-relevant lines (filtered from the build log):
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.DefaultQualityProducesIdenticalOutputToExplicitAuto() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 367
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.WithBaseSizeResizes() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 113
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.AllQualitiesProduceCorrectlySizedOutput(String qualityName) in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 467
at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.ColorizedWithAlphaWithColorsReplacesColors() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 239
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.BasicWithColorsKeepsColors() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 91
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.WithBaseSizeAndScaleResizes() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 135
at InvokeStub_ResizeQualityTests.AllQualitiesProduceCorrectlySizedOutput(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.BasicWithDownScaleReturnsDownScaledSize() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 72
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.ColorizedWithNamedReturnsColored() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 197
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.BestQualityMapsToMitchellCubicSampling() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 306
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.BasicNoScaleReturnsOriginalSize() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 53
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.ColorizedReturnsColored() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 157
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.BestQualityProducesDifferentPixelOutputThanAuto() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 436
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.AutoQualityMapsToLinearMipmapSampling() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 293
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.FastestQualityMapsToNearestNeighborSampling() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 319
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.BasicNoScaleNoResizeReturnsOriginalSize() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 34
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.ResizeWithFastestQualityProducesValidImage() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 333
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.ResizeWithBestQualityProducesValidImage() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 350
🔴 Without fix — 🧪 SkiaSharpSvgToolsTests: 🛠️ BUILD ERROR · 3s
Error-relevant lines (filtered from the build log):
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(375,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(405,17): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(405,27): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(412,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(412,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(435,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(435,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(442,14): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(442,24): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(462,30): error CS0246: The type or namespace name 'ResizeQuality' could not be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs(466,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension method 'Quality' accepting a first argument of type 'ResizeImageInfo' could be found (are you missing a using directive or an assembly reference?) [/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj]
🟢 With fix — 🧪 SkiaSharpSvgToolsTests: ⚠️ ENV ERROR · 72s
Error-relevant lines (filtered from the build log):
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.BasicWithColorsKeepsColors() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 91
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.ResizeQualityTests.FastestQualityHandlesFractionalSvgSizeWhenUpscaling() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 632
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.ColorizedWithColorsReplacesColors() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 217
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.BasicWithDownScaleReturnsDownScaledSize() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 72
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.ResizeQualityTests.ResizeWithBestQualityProducesValidImage() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 418
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.ColorizedWithAlphaReturnsColored() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 177
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.ResizeQualityTests.ResizeWithFastestQualityProducesValidImage() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 401
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.SvgImageWithDecodingIssue_12109() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 313
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.ResizeQualityTests.FastestQualityMapsToNearestNeighborSampling() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 387
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.ResizeQualityTests.DefaultQualityMapsToLinearMipmapSampling() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 361
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.ResizeQualityTests.DefaultQualityProducesIdenticalOutputToExplicitAuto() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 436
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.ColorsInCssCanBeUsed() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 260
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.ResizeQualityTests.FastestQualityAppliesSvgTintOnceWhenUpscaling() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 599
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.ColorizedWithAlphaWithColorsReplacesColors() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 239
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.ResizeQualityTests.DifferentQualitiesProduceDifferentPixelOutput() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 471
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.ResizeQualityTests.FastestQualityAffectsSvgUpscaling() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 512
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.ColorizedWithNamedReturnsColored() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 197
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.BasicNoScaleReturnsOriginalSize() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 33
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.SvgImageWithDecodingIssue_15442() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 279
at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.WithBaseSizeAndScaleResizes() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 135
🔴 Without fix — 📱 ModalTests: ⚠️ ENV ERROR · 1692s
(no coded error found; showing last 1200 chars)
tive code. This usually indicates
08-03 09:02:18.910 8758 8758 E DOTNET : a fatal error in the runtime or one of the native libraries
08-03 09:02:18.910 8758 8758 E DOTNET : used by your application.
info: Wrote ADB bugreport to /home/vsts/work/1/s/artifacts/log/adb-bugreport-com.microsoft.maui.controls.devicetests.zip
info: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "runnervmtroe5",
"exitCode": 80,
"exitCodeName": "APP_CRASH",
"platform": "android",
"device": "emulator-5554",
"deviceOsVersion": "API 30",
"architecture": "x86_64",
"files": [
{
"name": "adb-logcat-com.microsoft.maui.controls.devicetests-default.log",
"type": "logcat"
},
{
"name": "adb-bugreport-com.microsoft.maui.controls.devicetests.zip",
"type": "bugreport"
}
]
}
<<XHARNESS_RESULT_END>>
info: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
info: Successfully uninstalled com.microsoft.maui.controls.devicetests
XHarness exit code: 80 (APP_CRASH)
Tests completed with exit code: 80
🟢 With fix — 📱 ModalTests: ⚠️ ENV ERROR · 679s
(no coded error found; showing last 1200 chars)
tive code. This usually indicates
08-03 16:41:57.497 6946 6946 E DOTNET : a fatal error in the runtime or one of the native libraries
08-03 16:41:57.497 6946 6946 E DOTNET : used by your application.
info: Wrote ADB bugreport to /home/vsts/work/1/s/artifacts/log/adb-bugreport-com.microsoft.maui.controls.devicetests.zip
info: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "runnervmtroe5",
"exitCode": 80,
"exitCodeName": "APP_CRASH",
"platform": "android",
"device": "emulator-5554",
"deviceOsVersion": "API 30",
"architecture": "x86_64",
"files": [
{
"name": "adb-logcat-com.microsoft.maui.controls.devicetests-default.log",
"type": "logcat"
},
{
"name": "adb-bugreport-com.microsoft.maui.controls.devicetests.zip",
"type": "bugreport"
}
]
}
<<XHARNESS_RESULT_END>>
info: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
info: Successfully uninstalled com.microsoft.maui.controls.devicetests
XHarness exit code: 80 (APP_CRASH)
Tests completed with exit code: 80
🔴 Without fix — 📱 TabbedPageTests: ⚠️ ENV ERROR · 618s
(no coded error found; showing last 1200 chars)
tive code. This usually indicates
08-03 16:24:45.506 7486 7486 E DOTNET : a fatal error in the runtime or one of the native libraries
08-03 16:24:45.506 7486 7486 E DOTNET : used by your application.
info: Wrote ADB bugreport to /home/vsts/work/1/s/artifacts/log/adb-bugreport-com.microsoft.maui.controls.devicetests.zip
info: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "runnervmtroe5",
"exitCode": 80,
"exitCodeName": "APP_CRASH",
"platform": "android",
"device": "emulator-5554",
"deviceOsVersion": "API 30",
"architecture": "x86_64",
"files": [
{
"name": "adb-logcat-com.microsoft.maui.controls.devicetests-default.log",
"type": "logcat"
},
{
"name": "adb-bugreport-com.microsoft.maui.controls.devicetests.zip",
"type": "bugreport"
}
]
}
<<XHARNESS_RESULT_END>>
info: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
info: Successfully uninstalled com.microsoft.maui.controls.devicetests
XHarness exit code: 80 (APP_CRASH)
Tests completed with exit code: 80
🟢 With fix — 📱 TabbedPageTests: ⚠️ ENV ERROR · 622s
(no coded error found; showing last 1200 chars)
tive code. This usually indicates
08-03 16:51:23.102 6543 6543 E DOTNET : a fatal error in the runtime or one of the native libraries
08-03 16:51:23.102 6543 6543 E DOTNET : used by your application.
info: Wrote ADB bugreport to /home/vsts/work/1/s/artifacts/log/adb-bugreport-com.microsoft.maui.controls.devicetests.zip
info: <<XHARNESS_RESULT_START>>
{
"version": 1,
"machineName": "runnervmtroe5",
"exitCode": 80,
"exitCodeName": "APP_CRASH",
"platform": "android",
"device": "emulator-5554",
"deviceOsVersion": "API 30",
"architecture": "x86_64",
"files": [
{
"name": "adb-logcat-com.microsoft.maui.controls.devicetests-default.log",
"type": "logcat"
},
{
"name": "adb-bugreport-com.microsoft.maui.controls.devicetests.zip",
"type": "bugreport"
}
]
}
<<XHARNESS_RESULT_END>>
info: Attempting to remove apk 'com.microsoft.maui.controls.devicetests'..
info: Successfully uninstalled com.microsoft.maui.controls.devicetests
XHarness exit code: 80 (APP_CRASH)
Tests completed with exit code: 80
⚠️ Failure Details (17 tests)
- ❌ DispatcherTests PASSED without fix (should fail) — tests don't catch the bug
- 🛠️ GenerateSplashAssetsTests without fix: build failed before tests could run
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(373,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extens...
- ❌ MainThreadBridgeTests PASSED without fix (should fail) — tests don't catch the bug
- 🛠️ ResizeImageInfoTests without fix: build failed before tests could run
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(373,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extens...
- 🛠️ ResizerTests without fix: build failed before tests could run
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(69,18): error CS0103: The name 'ResizeQuality' does not exist in the current context [/home/vsts/work/1/s/src/S...
- 🛠️ ResizetizeImagesTests without fix: build failed before tests could run
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(373,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extens...
- 🛠️ SkiaSharpAppIconToolsTests without fix: build failed before tests could run
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(373,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extens...
- 🛠️ SkiaSharpRasterToolsTests without fix: build failed before tests could run
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(373,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extens...
- 🛠️ SkiaSharpSvgToolsTests without fix: build failed before tests could run
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs(373,10): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extens...
⚠️ ModalTests without fix:App crashed during test run (XHarness exit 80 APP_CRASH)⚠️ TabbedPageTests without fix:App crashed during test run (XHarness exit 80 APP_CRASH)- ❌ GenerateSplashAssetsTests FAILED with fix (should pass)
Device tests: 5 of 6 failed
⚠️ SkiaSharpAppIconToolsTests with fix:Native library 'libSkiaSharp' could not be loaded on the gate agent (DllNotFoundException) — the test could not run, so the fix is unverifiable here⚠️ SkiaSharpRasterToolsTests with fix:Native library 'libSkiaSharp' could not be loaded on the gate agent (DllNotFoundException) — the test could not run, so the fix is unverifiable here⚠️ SkiaSharpSvgToolsTests with fix:Native library 'libSkiaSharp' could not be loaded on the gate agent (DllNotFoundException) — the test could not run, so the fix is unverifiable here⚠️ ModalTests with fix:App crashed during test run (XHarness exit 80 APP_CRASH)⚠️ TabbedPageTests with fix:App crashed during test run (XHarness exit 80 APP_CRASH)
📁 Fix files reverted (13 files)
src/Maui.InTree.propssrc/Maui.InTree.targetssrc/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cssrc/SingleProject/Resizetizer/src/ResizeImageInfo.cssrc/SingleProject/Resizetizer/src/Resizer.cssrc/SingleProject/Resizetizer/src/ResizetizeImages.cssrc/SingleProject/Resizetizer/src/SkiaSharpAppIconTools.cssrc/SingleProject/Resizetizer/src/SkiaSharpImaginaryTools.cssrc/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cssrc/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cssrc/SingleProject/Resizetizer/src/SkiaSharpTools.cssrc/SingleProject/Resizetizer/src/WindowsIconGenerator.cssrc/SingleProject/Resizetizer/src/nuget/buildTransitive/Microsoft.Maui.Resizetizer.After.targets
New files (not reverted):
src/SingleProject/Resizetizer/src/ResizeQuality.cs
📋 Pre-Flight — Context & Validation
Issue: #25686 - made FilterQuality configurable for Resizetizer
PR: #34559 - Add configurable ResizeQuality for Resizetizer
Platforms Affected: android, build-time Resizetizer assets across platforms
Files Changed: 14 implementation, 9 test
Key Findings
- PR adds
ResizeQualitymetadata forMauiImage/icons/splash and maps it to SkiaSharp sampling options while preservingAutodefault behavior. - Metadata is included in Resizetizer input sidecar files so metadata-only changes can invalidate outputs.
- Linked context is a clean reimplementation of community PR made FilterQuality configurable for Resizetizer #25686, with current PR body stating it fixes made FilterQuality configurable for Resizetizer #25686.
- Gate result was provided as inconclusive due build/environment error; it was not rerun.
Code Review Summary
Verdict: NEEDS_DISCUSSION
Confidence: low
Errors: 0 | Warnings: 0 | Suggestions: 0
Key code review findings:
- ℹ No current code findings. Prior issues around metadata invalidation and undefined numeric enum values appear addressed in the PR head.
- ℹ CI/gate status remains undetermined, so the code-review verdict cannot be LGTM under the skill rules.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #34559 | ResizeQuality enum/metadata, SkiaSharp sampling options, sidecar metadata invalidation for images/icons/splash |
src/SingleProject/Resizetizer/**, tests, in-tree props/targets |
Original PR; gate was handled separately and not rerun |
🔬 Code Review — Deep Analysis
Code Review — PR #34559
Independent Assessment
What this changes: Adds ResizeQuality metadata for Resizetizer image resizing, mapping Auto/Best/Fastest to SkiaSharp sampling options and threading that through images, app icons, adaptive icons, splash assets, and incremental invalidation inputs.
Inferred motivation: Let developers trade image quality vs build speed while preserving default output compatibility.
Reconciliation with PR Narrative
Author claims: Configurable Resizetizer quality, default-compatible Auto, metadata-aware invalidation, tests, and in-tree BuildTasks import guard.
Agreement/disagreement: The current code matches those claims. Prior incremental invalidation gaps called out in earlier reviews appear addressed in the current head.
Prior Review Reconciliation
| Prior ❌ Error Finding | Source | Status | Evidence |
|---|---|---|---|
| Missing/incorrect enum XML docs | issue/inline comments | ✅ Fixed | ResizeQuality.cs has valid summaries and no stale file-size/downscale-overpromise wording. |
MauiImage ResizeQuality missing from inputs |
issue comment | ✅ Fixed | Microsoft.Maui.Resizetizer.After.targets:344 includes ResizeQuality=%(ResizeQuality). |
Splash ResizeQuality missing from inputs |
MauiBot/kubaflo inline | ✅ Fixed | Microsoft.Maui.Resizetizer.After.targets:356 includes ResizeQuality=%(ResizeQuality). |
| App/adaptive icon outputs stale after metadata-only changes | MauiBot inline | ✅ Fixed | ResizetizeImages.cs:223 and AndroidAdaptiveIconGenerator.cs:85,127,169 use Resizer.IsUpToDate(..., InputsFile, ...); Resizer.cs:86-110 compares inputs-file mtime. |
| Undefined numeric enum values accepted | MauiBot inline | ✅ Fixed | ResizeImageInfo.cs:125-126 checks Enum.IsDefined. |
Blast Radius Assessment
- Runs for all instances: Yes, Resizetizer tasks run for MAUI image/icon/splash processing, but behavior defaults to
Auto. - Startup impact: No runtime app startup impact; build-time asset generation only.
- Static/shared state: No new meaningful shared state beyond existing SkiaSharp retry statics.
External Output Contract
| Consumer token/pattern | Producer location | Producer emission condition | Consumer assumption | Ordinary negative case | Downstream effect |
|---|---|---|---|---|---|
| N/A | N/A | N/A | N/A | N/A | No changed code classifies external tool output. |
CI Status
- Required-check result: pending/undetermined.
gh pr checks --requiredwas unavailable due missing auth; public check-runs for head3b29bba...showmaui-prqueued andBuild Analysis/ one integration leg still in progress. - Classification: undetermined.
- Action taken: invoked
azdo-build-investigatorskill context; confidence capped low and verdict cannot be LGTM while checks are pending.
Findings
No current code findings.
Failure-Mode Probing
- Metadata-only quality change after prior build: current inputs-file mtime is included in freshness checks, so affected outputs should regenerate.
- Optional app icon parts absent:
Resizer.IsUpToDateskips null/empty input paths while still requiring the inputs file and output to exist; manufactured outputs can still be considered up to date by metadata timestamp. - Invalid
ResizeQuality: undefined names/numeric values fall back toAuto.
Verdict: NEEDS_DISCUSSION
Confidence: low
Summary: Code review found no unresolved correctness issues in the current head, and prior major findings appear fixed. CI is still pending/undetermined, so this cannot be LGTM under the skill rules.
🛠️ Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| 1 | try-fix | Centralize ResizeQuality normalization and SKSamplingOptions mapping in an internal policy helper | 3 files | Metadata parsing tests passed (14/14), but broader Skia raster/SVG tests blocked by missing libSkiaSharp; expert review clean |
|
| 2 | try-fix | Parse only documented ResizeQuality names, rejecting numeric enum metadata tokens to Auto |
✅ Pass (targeted) | 2 files | Metadata parser tests passed (17/17); expert review clean; additive robustness improvement |
| 3 | try-fix | Default missing ResizeQuality metadata to Auto in MSBuild before writing input sidecar files |
✅ Pass (targeted) | 2 files | Target-file tests passed (2/2); expert review clean; additive incremental-build consistency improvement |
| PR | PR #34559 | ResizeQuality enum/metadata, direct SkiaSharp sampling mapping, and sidecar metadata invalidation |
23 files | Original PR; gate was provided as inconclusive and not rerun |
Cross-Pollination
| Model | Round | New Ideas? | Details |
|---|---|---|---|
| maui-expert-reviewer | 2 | No | Attempts 1-3 cover the meaningful non-Skia-testable alternatives; remaining options are refinements of parsing/defaulting/up-to-date policy or require native Skia verification. |
Exhausted: Yes
Selected Fix: PR's fix — No standalone candidate could be proven better than the PR's current fix under the environment blocker. Candidate #2 and Candidate #3 are clean, targeted, additive improvements worth considering, but neither replaces the PR's core Skia sampling implementation and neither received full Skia-native regression coverage here.
Attempt Narratives
try-fix-1
See ../try-fix-1/content.md.
try-fix-2
See ../try-fix-2/content.md.
try-fix-3
See ../try-fix-3/content.md.
🏁 Report — Final Recommendation
Comparative Report — PR #34559
Candidates compared
| Candidate | Result status | Reviewer findings | Summary |
|---|---|---|---|
pr |
0 current findings | Complete implementation of configurable Resizetizer ResizeQuality, including Skia sampling, metadata propagation, sidecar invalidation, and tests. |
|
pr-plus-reviewer |
0 findings | Same as pr; the expert reviewer found no actionable feedback to apply. |
|
try-fix-1 |
0 findings | Centralizes quality normalization and sampling mapping. Clean refactor, but broader Skia-native regression coverage was blocked and it does not supersede the PR's complete implementation. | |
try-fix-2 |
✅ Targeted pass | 0 findings | Additive parser hardening: accepts only documented enum names and rejects numeric metadata values to Auto. Useful refinement, but narrower than the PR fix and already covered by the PR's undefined numeric fallback for invalid values. |
try-fix-3 |
✅ Targeted pass | 0 findings | Additive MSBuild-side defaulting so omitted and explicit Auto metadata are equivalent in sidecar files. Useful incremental-build refinement, but narrower than the PR fix and not a replacement for the full sampling implementation. |
Regression-test ranking rule
No candidate has a confirmed regression-test failure that should rank it below a passing candidate. The PR/gate status is inconclusive, not failing, because the supplied gate result identifies build/environment errors and Skia native library loading blockers. try-fix-1 is likewise blocked by missing libSkiaSharp; try-fix-2 and try-fix-3 passed their targeted non-native coverage but do not validate the full Resizetizer output surface.
Analysis
The submitted PR is the only candidate that fully implements the feature requested by #25686: public-ish internal ResizeQuality semantics, metadata parsing, quality-to-Skia sampling behavior, propagation through raster/SVG/app icon/adaptive icon/monochrome/splash paths, and metadata-aware incremental invalidation. The expert review pass produced no inline findings, so the pr-plus-reviewer candidate is identical to pr.
The try-fix candidates are useful refinements, not standalone replacements. try-fix-1 improves maintainability by centralizing policy, but it is a refactor of the PR behavior and lacks full Skia-native verification in this environment. try-fix-2 and try-fix-3 passed targeted tests, but each covers a narrow edge of the already-complete PR implementation rather than replacing the end-to-end fix.
Winner
Winner: pr
Rationale: The raw PR fix is review-clean, covers the complete requested behavior, and has no actionable expert-review changes to apply. Because pr-plus-reviewer is identical and the try-fix candidates are narrower additive alternatives, the submitted PR remains the best single candidate.
🧭 Next Steps — review latest findings
No alternative fix was selected for this run. Review the session findings and CI results before merging.
Empirical review resultsVerdict: LGTM — no blocking code findings. The PR's implementation is the best of the tested approaches. I recommend merging after the PR description metadata is corrected. What I tested
Platform evidenceI ran the real
MacCatalyst uses the iOS Resizetizer backend. Pure macOS is not a separate Resizetizer backend; the PR's macOS build, pack, and integration lanes are green. Current CI: maui-pr build 1537518 succeeded with 30 successful checks, 1 skipped, 0 failing, including RunOnAndroid and all iOS integration variants. Separate Visual evidenceThese are the actual PNG bytes produced by the production Resizetizer code path, not mocked filters. Raster: source / Auto / Best / Fastest
SVG upscale: Auto / Best / Fastest
Platform/task and CI summaryShort comparison videoresizequality_cycle.mp4
Review findingsNo blocking correctness issues remain. Prior findings around SVG Fastest upscaling, undefined enum values, icon/splash metadata invalidation, and incremental app-icon generation are fixed in the current head. Non-blocking notes:
PR description corrections
Raw output hashes
|
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ec56cb07-d0e4-49cf-90fc-7c86d816e36a
Updated-head empirical re-review: REQUEST CHANGESCorrection to my earlier review: that result covered head Blocking finding
Changing Empirical platform resultsProduction MSBuild tasks, Fastest vs Auto, 1792 -> 64 PNG downscale:
The Android light control proves the source and comparison detect sampling changes. MacCatalyst regular Video walkthrough: themed-splash-resizequality-regression.mp4Tests
CI at the updated headCurrent maui-pr build 1542519 is green: 26/26 jobs succeeded, including macOS/Windows builds, No Recommended fixPreserve quality at both clone boundaries: // GenerateSplashAssetCatalog.CloneForAsset
Quality = info.Quality,
// ResizeImageInfo.CreateDarkVariant
Quality = Quality,Add regression tests that require Fastest and Auto to produce different pixels for:
I tested five alternatives with four models. All passed, but the direct two-line propagation above is the safest: it changes only the missing metadata, while the alternatives introduced a broader clone abstraction, a PR description follow-up
Recommendation remains REQUEST CHANGES for |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ec56cb07-d0e4-49cf-90fc-7c86d816e36a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ec56cb07-d0e4-49cf-90fc-7c86d816e36a
Newest-head re-review (
|
| Path | Platform(s) | Differing pixels | Result |
|---|---|---|---|
| Android light splash | Android | 616 / 4096 | Quality applied |
| Android dark/night splash | Android | 0 / 4096 | Quality ignored |
| Apple asset-catalog light | iOS + MacCatalyst | 0 / 4096 | Quality ignored |
| Apple asset-catalog dark | iOS + MacCatalyst | 0 / 4096 | Quality ignored |
Video:
themed-splash-regression-943428ab.mp4
Gate and fix verification
- Current head external themed gate: 3 failed, 1 passed
- Full suite with failing gate injected: 683 passed, 3 failed, 2 skipped
- Selected two-line fix: focused 4/4 passed; full injected suite 686 passed, 2 skipped
Recommended patch remains:
// GenerateSplashAssetCatalog.CloneForAsset
Quality = info.Quality,
// ResizeImageInfo.CreateDarkVariant
Quality = Quality,I reran the mandatory multi-model exploration from scratch on this head. Six approaches passed (direct copies, general copy, Resizer override, narrow settings copy, original ITaskItem lookup, and record cloning). The two direct assignments remain safest because they fix exactly the missing metadata without adding broader copying, MSBuild coupling, constructor state, or equality changes.
Please also add themed regression tests for Apple light, Apple dark, and Android dark/night.
CI/metadata notes
- No
maui-pr-devicetestsormaui-pr-uitestsbuild exists for this PR ref. - The description still links stale build
1511407; current is1543333. Fixes #25686should still beFixes #25750; made FilterQuality configurable for Resizetizer #25686 is the earlier community PR.- The description's complete splash-propagation claim remains inaccurate until the clone paths are fixed.
Recommendation remains REQUEST CHANGES for 943428ab.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ec56cb07-d0e4-49cf-90fc-7c86d816e36a
|
The themed-splash Root cause The themed splash work merged from
Because Empirical red/green evidence Using the production splash tasks with
The new tests exercise Validation
@kubaflo, the regression you identified is now covered by production-task pixel evidence on every affected themed path. Please re-review when possible; the remaining |
Newest-head re-review (
|
| State | Android dark/night | Apple light | Apple dark |
|---|---|---|---|
| Without only the two new assignments | ❌ fail | ❌ fail | ❌ fail |
With a6f7f810 |
✅ pass | ✅ pass | ✅ pass |
- Focused gate without fix: 0 passed, 3 failed
- Focused gate with fix: 3 passed, 0 failed
- Full Resizetizer suite: 685 passed, 2 Windows-only skipped, 0 failed
Fresh production-task outputs on macOS, using the same 1792 -> 64 PNG input:
| Path | Platform(s) | Fastest vs Auto | Result |
|---|---|---|---|
| Android light splash | Android | 616 / 4096 pixels | Quality applied |
| Android dark/night splash | Android | 616 / 4096 pixels | Quality applied |
| Apple asset-catalog light | iOS + MacCatalyst | 616 / 4096 pixels | Quality applied |
| Apple asset-catalog dark | iOS + MacCatalyst | 616 / 4096 pixels | Quality applied |
Video:
themed-splash-fix-a6f7f810.mp4
Code review and additional probe
No blocking correctness findings remain. A low-confidence question was raised about omitting the outer SKPaint while rasterizing non-Auto SVGs. I reproduced that operation directly with vector curves and a diagonal stroke: drawing with versus without new SKPaint { IsAntialias = true } produced 0 / 4096 differing pixels, so the concern did not reproduce.
Alternative-fix comparison
The required four-model exploration and three cross-pollination rounds covered:
- centralized metadata copying
- live source-linked quality resolution
MemberwiseClone- copy constructor/factory materialization
- source-backed overlay variants
- MSBuild item pre-expansion
- scoped in-place reuse
Five alternatives passed the focused tests and two were safely blocked by the baseline file boundary. The PR's two direct assignments remain the best solution: they are the smallest change, preserve existing object semantics, and fix exactly the two demonstrated omissions.
Exact-head CI
- Required checks: passed
maui-prbuild 1544479: succeeded- Build merge SHA:
6e75bd9 - Merge parents include exact PR head
a6f7f810 - Build Analysis: no known issues and no unmatched failures
- No
maui-pr-devicetestsormaui-pr-uitestsbuild was triggered for this PR ref
Description cleanup before merge
The implementation and title are good. The description should still:
- update stale build
1511407to1544479 - change
Fixes #25686toFixes #25750(#25686is the earlier community PR) - mention the bundled Avalonia template skips, or split that unrelated CI change
Final recommendation: LGTM. The previous themed-splash REQUEST CHANGES finding is resolved at a6f7f810.






Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Description
Adds a configurable
ResizeQualityoption to Resizetizer, allowing developers to control image resampling quality when resizing images.This is a clean re-implementation of community PR #25686 (by @thisisthekap), rebased onto
net11.0and updated based on review feedback.Key changes
Adds a new
ResizeQualityenum withAuto(default),Best, andFastestvalues.Adds
ResizeQualityMSBuild metadata support, for example:Maps
ResizeQualityto SkiaSharpSKSamplingOptionsinstead of the obsoletePaint.FilterQualitypath.Preserves existing behavior for
Auto, including default output compatibility.Propagates quality metadata through app icons, adaptive icons, monochrome icons, splash images, and generated image inputs so metadata-only changes correctly invalidate outputs.
Preserves quality when themed splash processing clones Apple light/dark assets and creates Android dark/night variants.
Applies quality choices consistently for raster and SVG resizing, including SVG upscale/downscale paths, tint handling, and fractional SVG dimensions.
Adds a defensive in-tree BuildTasks import guard in
Maui.InTree.props/Maui.InTree.targetsso partial.buildtasksoutputs do not fail with missing Core or Resizetizer props/targets imports before the friendly BuildTasks diagnostic can run.Quality mappings
AutoBestFastestTests
Adds and updates Resizetizer unit coverage for:
Autocompatibility.Validation
Latest
maui-prrun is green: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1544479Fixes #25750