Skip to content

Add configurable ResizeQuality for Resizetizer#34559

Open
jfversluis wants to merge 9 commits into
net11.0from
feature/resizetizer-configurable-filter-quality
Open

Add configurable ResizeQuality for Resizetizer#34559
jfversluis wants to merge 9 commits into
net11.0from
feature/resizetizer-configurable-filter-quality

Conversation

@jfversluis

@jfversluis jfversluis commented Mar 19, 2026

Copy link
Copy Markdown
Member

Description

Adds a configurable ResizeQuality option to Resizetizer, allowing developers to control the image resampling quality when resizing images. This is a clean re-implementation of community PR #25686 (by @thisisthekap), rebased onto net11.0 and incorporating review feedback from @mattleibow.

Key changes:

  • New ResizeQuality enum with three values: Auto (default), Best, Fastest
  • Maps to SKSamplingOptions (not the deprecated Paint.FilterQuality which is ignored by newer SkiaSharp)
  • MSBuild metadata: <MauiImage ResizeQuality="Fastest" ... />
  • Zero behavior change for existing usersAuto produces identical output to the previous hardcoded behavior

Quality mappings:

ResizeQuality SKSamplingOptions Use case
Auto (default) Linear + Linear mipmaps Same as previous behavior
Best Mitchell cubic resampler Highest quality downscaling
Fastest Nearest neighbor, no mipmaps Fast builds, pixel art

Usage:

<MauiImage Include="Resources\Images\photo.png" ResizeQuality="Fastest" />

Changes

9 source files across Resizetizer:

  • ResizeQuality.cs (new) — Custom enum
  • ResizeImageInfo.cs — Quality property + case-insensitive MSBuild metadata parsing
  • SkiaSharpTools.cs — ResizeQuality → SKSamplingOptions mapping; removed obsolete Paint.FilterQuality
  • SkiaSharpRasterTools.cs, SkiaSharpSvgTools.cs, SkiaSharpImaginaryTools.cs — Constructor chains
  • Resizer.cs, SkiaSharpAppIconTools.cs, AndroidAdaptiveIconGenerator.cs — Pass quality through

4 test files with 37 new tests:

  • SamplingOptions correctness tests (all 3 qualities map correctly)
  • Functional pixel-comparison tests (different qualities produce different output)
  • Regression tests (default == explicit Auto, pixel-identical)
  • End-to-end MSBuild pipeline tests
  • Case-insensitive parsing tests

Test results

  • 605 passed, 20 failed (pre-existing AppIconTools failures), 0 regressions
  • All 37 new tests pass ✅

Review notes

Addresses feedback from @mattleibow on #25686:

  • ✅ Uses custom enum instead of exposing SkiaSharp's deprecated SKFilterQuality
  • ✅ Maps to SKSamplingOptions (the actual rendering control, not the ignored Paint.FilterQuality)
  • Best uses SKCubicResampler.Mitchell as suggested

Items for reviewer consideration:

  • Enum naming (Auto/Best/Fastest) — open to alternatives like Default/High/Low
  • TizenSplashUpdater has its own hardcoded quality (separate code path, out of scope)

Fixes #25686

Copilot AI review requested due to automatic review settings March 19, 2026 09:40
@github-actions

github-actions Bot commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 34559

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 34559"

@jfversluis jfversluis requested a review from mattleibow March 19, 2026 09:44
@jfversluis jfversluis added the area-single-project Splash Screen, Multi-Targeting, MauiFont, MauiImage, MauiAsset, Resizetizer label Mar 19, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 ResizeQuality enum and plumbs it through ResizeImageInfo → tool creation → resize operations.
  • Replaces use of obsolete SKPaint.FilterQuality with explicit SKSamplingOptions selection based on ResizeQuality.
  • 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.

Comment thread src/SingleProject/Resizetizer/src/ResizeQuality.cs Outdated
@jfversluis jfversluis requested a review from Copilot March 19, 2026 09:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 ResizeQuality enum and plumbs it through ResizeImageInfo parsing and all resizing/tooling entry points.
  • Switches resampling control to SKSamplingOptions (removing the obsolete SKPaint.FilterQuality usage) and maps ResizeQuality values 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.

Comment thread src/SingleProject/Resizetizer/src/ResizeQuality.cs Outdated
@kubaflo

kubaflo commented Apr 3, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

ResizeQuality for Resizetizer — Adds Auto/Best/Fastest quality options, replaces deprecated Paint.FilterQuality with SKSamplingOptions. 37 new tests including pixel-comparison regression tests. Backward compatible (Auto = previous behavior).

Findings

Severity Finding
🔴 Critical Missing </summary> closing tag on Best enum member XML doc in ResizeQuality.cs
🔴 Critical MSBuild incremental build won't detect ResizeQuality changesResizeQuality=%(ResizeQuality) is missing from the mauiimage.inputs tracking in Microsoft.Maui.Resizetizer.After.targets (line ~328). Users changing quality settings will get stale cached images unless they clean-rebuild
🟡 Warning TizenSplashUpdater.cs still uses deprecated Paint.FilterQuality (acknowledged as out of scope)
🟡 Warning No test for SkiaSharpImaginaryTools with ResizeQuality
🔵 Info Excellent backward compatibility design — Auto maps to identical sampling as previous hardcoded value
🔵 Info 37 tests with pixel-comparison regression coverage is thorough

Overall Assessment

⚠️ Needs two fixes before merge:

  1. Fix the missing </summary> XML doc tag (one-liner)
  2. Add ResizeQuality=%(ResizeQuality) to the MSBuild inputs file to avoid caching bugs

Otherwise the design, test coverage, and backward compatibility story are solid.


Review performed by Copilot CLI

@jfversluis jfversluis added this to the .NET 11.0-preview4 milestone Apr 7, 2026
@jfversluis jfversluis force-pushed the feature/resizetizer-configurable-filter-quality branch from a438af9 to 28be2d7 Compare April 7, 2026 14:23
@kubaflo

kubaflo commented Apr 7, 2026

Copy link
Copy Markdown
Contributor

Code Review — PR #34559

Independent Assessment

What this changes: Adds configurable ResizeQuality metadata to Resizetizer, controlling image resampling via SKSamplingOptions. New internal ResizeQuality enum (Auto/Best/Fastest) maps to SkiaSharp sampling strategies. Threaded through all SkiaSharp tool constructors and factory methods. Zero behavior change for default Auto — identical output to previous hardcoded behavior.

Target branch: net11.0 — correct for new feature. Milestone .NET 11.0-preview4.

Reconciliation with PR Narrative

Agreement: ✅ Code matches description. Addresses @mattleibow's feedback on #25686: uses custom enum (not deprecated SKFilterQuality), maps to SKSamplingOptions (the actual rendering control), and Best uses SKCubicResampler.Mitchell.


Findings

✅ Good — Correct SkiaSharp API usage

The old code relied on Paint.FilterQuality which is deprecated and ignored by modern SkiaSharp. The new code explicitly passes SKSamplingOptions to canvas.DrawImage():

// SkiaSharpRasterTools.DrawUnscaled
canvas.DrawImage(img, 0, 0, SamplingOptions, Paint);

// SkiaSharpSvgTools.DrawUnscaled (downscale path)
canvas.DrawImage(img, 0, 0, SamplingOptions, Paint);

SVG upscaling (scale >= 1) correctly skips SamplingOptions — vector rendering is lossless, so canvas.DrawPicture(svg.Picture, Paint) is used directly. ✅

✅ Good — Quality mappings are well-chosen

ResizeQuality SKSamplingOptions Rationale
Auto Linear + Linear mipmaps Matches previous hardcoded behavior exactly
Best SKCubicResampler.Mitchell Industry-standard high-quality cubic resampler
Fastest Nearest, no mipmaps Zero interpolation overhead

✅ Good — Backwards compatible

  • ResizeQuality defaults to Auto via DefaultResizeQuality
  • Auto maps to the same Linear/Linear that was hardcoded before
  • Invalid MSBuild values silently fall back to Auto (via Enum.TryParse returning false)
  • Case-insensitive parsing: ResizeQuality="best" works ✅

✅ Good — Clean constructor threading

Quality parameter added to all constructor chains consistently:

  • SkiaSharpTools.Create(...) factory
  • SkiaSharpRasterTools, SkiaSharpSvgTools constructors
  • SkiaSharpImaginaryTools (passes through but doesn't use — correct, no source image to resample)
  • Resizer, SkiaSharpAppIconTools, AndroidAdaptiveIconGenerator callers

✅ Good — Incremental build support

ResizeQuality added to the _ResizetizerInputsFile line in the MSBuild targets, ensuring build is invalidated when quality changes.

✅ Good — Comprehensive tests (22 new)

  • Sampling options mapping tests for all 3 qualities × both Raster and SVG tools
  • Pixel comparison tests proving different qualities produce different output
  • Regression test: default == explicit Auto (pixel-identical)
  • Case-insensitive parsing tests
  • MSBuild metadata parsing tests

💡 Observation — SkiaSharpImaginaryTools doesn't use quality

SkiaSharpImaginaryTools (used to manufacture solid-color placeholder icons) receives ResizeQuality.Auto from CreateImaginary but never uses it for sampling — its DrawUnscaled likely just fills a solid rect. This is correct but could be documented with a brief comment in CreateImaginary:

// Quality irrelevant for imaginary tools — no source image to resample

💡 Observation — Silent fallback for invalid values

Invalid ResizeQuality metadata (e.g., ResizeQuality="Turbo") silently defaults to Auto. This is user-friendly but could be surprising. A Logger.Log warning for unrecognized values would help developers catch typos:

var rawQuality = image.GetMetadata("ResizeQuality");
if (!string.IsNullOrEmpty(rawQuality) && !Enum.TryParse<ResizeQuality>(rawQuality, ignoreCase: true, out var quality))
    Logger?.Log($"Warning: Unrecognized ResizeQuality {rawQuality}, using Auto.");

Not a blocker — just a nice-to-have for discoverability.

ℹ️ Note — ResizeQuality is internal

The enum is internal — only accessible via MSBuild metadata, not from C# code. This is correct for a build-time configuration. No PublicAPI.Unshipped.txt entries needed.

ℹ️ Note — CI Status

No CI failures detected. Clean build.


Devil's Advocate

  • "Why not expose the SkiaSharp enum directly?"@mattleibow's review on made FilterQuality configurable for Resizetizer #25686 explicitly requested a custom enum because SKFilterQuality is deprecated and SKSamplingOptions is too low-level for MSBuild metadata. The three-value abstraction is the right choice.
  • "Is Mitchell actually better than Linear for app icons?" — Mitchell cubic resampling is the industry standard for high-quality image downscaling (used by ImageMagick, libvips, etc.). For 108px→48px app icon density scaling, it preserves more detail than bilinear. Correct choice.
  • "Could the extra parameter break callers of SkiaSharpTools.Create?" — All internal callers are updated in this PR. The types are internal, so no external consumers exist.
  • "Does Fastest produce unusably bad output?" — For pixel art or development builds, nearest-neighbor is intentional. The PR title/docs make the tradeoff clear. Users opt in explicitly.

Verdict: LGTM

Confidence: high
Summary: Clean re-implementation of community PR #25686 addressing reviewer feedback. Correct SkiaSharp API migration from deprecated Paint.FilterQuality to SKSamplingOptions. Zero behavior change for default users. Well-chosen quality mappings, consistent constructor threading, comprehensive tests. Ready for merge.

Review performed by Copilot CLI using the code-review skill

kubaflo
kubaflo previously approved these changes Apr 7, 2026
@github-actions

github-actions Bot commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

🧪 PR Test Evaluation

Overall Verdict: ✅ Tests are adequate

This PR adds 37 new unit tests with excellent coverage of the core ResizeQuality feature — sampling options mapping, pixel-level regression testing, case-insensitive parsing, and E2E MSBuild pipeline validation. A few minor gaps exist around app icon code paths that were modified but not directly tested.

👍 / 👎 — Was this evaluation helpful? React to let us know!

📊 Expand Full Evaluation

PR Test Evaluation Report

PR: #34559 — Add configurable ResizeQuality for Resizetizer
Test files evaluated: 4
Fix files: 10 (including new ResizeQuality.cs)


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 SkiaSharpAppIconTools and AndroidAdaptiveIconGenerator code paths, which were modified but not directly tested.


1. Fix Coverage — ✅

The tests trace directly to the changed code paths:

  • SkiaSharpRasterToolsTests.ResizeQualityTests verifies the SamplingOptions property is set to the correct SKSamplingOptions for each ResizeQuality value — directly testing the switch expression in SkiaSharpTools
  • SkiaSharpSvgToolsTests.ResizeQualityTests mirrors the above for SVG tools
  • ResizeImageInfoTests.ResizeQualityTests directly tests the ResizeImageInfo.Parse() method for MSBuild metadata parsing
  • ResizetizeImagesTests covers the full E2E pipeline: task creation → resize → output file

If the quality mapping switch were reverted, the sampling options correctness tests would fail. If the Enum.TryParse parsing were removed, the QualityParsedFromTaskItem tests would fail.


2. Edge Cases & Gaps — ⚠️

Covered:

  • All three ResizeQuality values (Auto, Best, Fastest) map to correct SKSamplingOptions
  • Default (no quality set) == explicit Auto at pixel level (regression guarantee)
  • Case-insensitive MSBuild metadata parsing (auto, FASTEST, best)
  • Invalid/unrecognized metadata value gracefully defaults to Auto
  • ResizeQualityMetadataIsRespectedEndToEnd — full MSBuild pipeline test
  • Fastest vs Auto produce different pixel output (raster + SVG)
  • Best vs Auto produce different pixel output (raster only)
  • All qualities produce correctly sized output (dimensions)

Missing:

  • SkiaSharpAppIconTools with qualitySkiaSharpAppIconTools was changed to pass info.Quality to SkiaSharpTools.Create for both background and foreground, but there's no test that app icon processing respects ResizeQuality. The existing SkiaSharpAppIconToolsTests are not updated with quality scenarios.
  • AndroidAdaptiveIconGenerator with quality — Similarly, adaptive icon background/foreground now pass Info.Quality, but no test covers this code path.
  • SVG: Best vs Auto pixel comparison missingSkiaSharpSvgToolsTests has DifferentQualitiesProduceDifferentPixelOutput for Fastest vs Auto, but not for Best vs Auto. The raster tests have both comparisons. (Minor: SVG rendering is vector-based so differences may be less predictable, but worth noting.)
  • Build invalidation — The .targets file was updated to include ResizeQuality in the incremental build hash. No test verifies that changing ResizeQuality triggers a rebuild (existing Resizetizer tests don't cover this, and it's a valid gap).

3. Test Type Appropriateness — ✅

Current: Unit Tests (xUnit, [Fact]/[Theory])
Recommendation: Same — this is exactly right.

Resizetizer is a build tool with no platform or UI dependency. All logic (enum mapping, SKSamplingOptions selection, pixel output) is pure, deterministic, and testable in isolation. Unit tests are the correct and optimal choice here.


4. Convention Compliance — ✅

  • Uses xUnit [Fact] and [Theory] with [InlineData]
  • Inner test class organization (e.g., ResizeQualityTests nested inside the existing test class) follows the pattern used elsewhere in the file ✅
  • IDisposable pattern used correctly for temp file cleanup in SkiaSharpRasterToolsTests and SkiaSharpSvgToolsTests
  • Test files are in the correct test project (Resizetizer.UnitTests.csproj) ✅

5. Flakiness Risk — ✅ Low

  • Tests are fully deterministic (no async, no delays, no platform-specific rendering)
  • Pixel comparison tests rely on SkiaSharp's deterministic resampling — low risk for false negatives
  • Minor theoretical risk: Assert.True(differentPixels > 0, ...) could fail if SkiaSharp changes its algorithm or if a test image happened to produce identical output at a given scale. Using a real-world photo (camera.png downscaled to 100×100) makes this unlikely.

6. Duplicate Coverage — ✅ No duplicates

This is a new feature; no existing tests cover ResizeQuality. No overlap detected.


7. Platform Scope — ✅

Resizetizer is a build-time tool with no platform-specific code. Unit tests run cross-platform (Windows, macOS, Linux). The ResizeQuality feature itself works at build time and is platform-agnostic — no additional platform-specific testing is needed.


8. Assertion Quality — ✅

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) ⚠️ Not directly tested
AndroidAdaptiveIconGenerator.cs (passes quality) ⚠️ Not directly tested
Microsoft.Maui.Resizetizer.After.targets (build invalidation) ⚠️ Not directly tested

Recommendations

  1. (Nice-to-have) Add a quality test to SkiaSharpAppIconToolsTests — Add a test that creates an app icon with ResizeQuality=Fastest and verifies the output differs from Auto. Since the existing SkiaSharpAppIconToolsTests already test pixel output, this would be a straightforward addition.
  2. (Nice-to-have) Add SVG Best vs Auto pixel comparison — Mirror BestQualityProducesDifferentPixelOutputThanAuto from SkiaSharpRasterToolsTests in SkiaSharpSvgToolsTests to ensure SVG quality behaves as expected for Best mode.
  3. (Low priority) Consider a ResizeQuality E2E test for app icons — A test in ResizetizeImagesTests that uses an app icon item with ResizeQuality set would close the gap for the AndroidAdaptiveIconGenerator code 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.

🧪 Test evaluation by Evaluate PR Tests

@kubaflo

kubaflo commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

AI code review refresh for net11.0 target

Head reviewed: 562562f

Verdict: Blocked/limited — Resizetizer code/test review LGTM, but current required CI is not green/complete.

Prior review reconciliation:

  • Re-checked the prior inline findings: the ResizeQuality XML docs no longer over-promise file-size/upscaling behavior, and the E2E pixel comparison now asserts equal pixel-buffer length before indexing.
  • Earlier CI-blocked assessments remain materially true: the newest rebase started fresh CI, but it has already produced unmatched required-build failures.

Latest commit / blast radius:

  • The new commit only changes AndroidAdaptiveIconGenerator.ProcessMonochrome to pass Info.Quality into SkiaSharpTools.Create(...) for monochrome adaptive icon resizing. That matches the background/foreground adaptive icon paths and fixes the constructor propagation gap without widening behavior beyond configured Resizetizer quality.
  • Blast radius remains limited to Resizetizer image/app-icon build tasks and their incremental input tracking (ResizeQuality is included in _ResizetizerInputsFile). Default Auto still maps to the previous linear+mipmap sampling path.

Findings:

  • No new high-signal code issues found in the ResizeQuality plumbing, SKSamplingOptions mapping, app-icon/adaptive-icon paths, or targeted tests.
  • Numeric out-of-range ResizeQuality metadata would still parse through Enum.TryParse and fall back to Auto in the sampling switch; I consider this non-blocking because named invalid values default to Auto and the value is internal metadata, but an Enum.IsDefined guard would be stricter.

CI status:

  • Required maui-pr build 1459217 is still in progress/pending in GitHub, but Build Analysis already reports unmatched failures.
  • Failing areas seen so far: macOS AOT reports unexpected NativeAOT warning files; iOS RunOniOS_MauiReleaseTrimFull / CoreCLR integration tests fail to build with IL2026 HybridWebView trim errors. Build Analysis has no matched known issue for this build, though the IL2026 signature resembles the open transferred issue [iOS] IL2026 trim errors from Managed Registrar referencing HybridWebViewHandler nested classes macios#25285. These failures do not correlate with Resizetizer image resizing files, but they block merge-readiness.

Confidence: High for the Resizetizer code and test correctness; medium for CI correlation because current required CI is incomplete and has unmatched failures.

Non-approval disclaimer: this is an automated Copilot CLI review comment only, not a GitHub approval. Human maintainer approval is still required.

@kubaflo kubaflo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Verdict: NEEDS_DISCUSSION (confidence: medium)

The core feature is correct, backward-compatible, and well-tested — the ResizeQuality enum maps to the right SKSamplingOptions, every SkiaSharpTools constructor/factory is threaded with Info.Quality, Auto reproduces prior output, and the MauiImage incremental-build invalidation was correctly wired (a fix already applied earlier in this PR). However, validating against the real code surfaced two genuine, non-blocking incremental-build completeness gaps that warrant author input rather than a silent approve or a hard block.

Why the models split: opus-4.6 (LGTM/0) and opus-4.8 (LGTM/1) validated the core mapping/backward-compat deeply but missed the incremental-build edge cases (opus-4.8 only surfaced a minor doc-wording nuance on an internal enum). gemini (NEEDS_DISCUSSION) correctly caught the splash _MauiSplashInputsFile invalidation gap. gpt-5.5 (NEEDS_CHANGES) correctly caught the app-icon timestamp skip but over-escalated a pre-existing, non-regression limitation to a blocking errorResizetizeImages.cs is not even in this PR's changed files, and the feature is correct on clean builds. The truth is in between: real findings, but none is a clean-build correctness bug, so NEEDS_CHANGES is a false positive while LGTM-0 understates them.

Key findings (all non-blocking):

  • Splash invalidation gap (gemini — valid): _ResizetizerInputsFile got ResizeQuality=%(ResizeQuality) (line 329) but the parallel _MauiSplashInputsFile (lines 339-341) did not. The Windows splash path (GenerateSplashAssetsResizeImageInfo.ParseSkiaSharpAppIconToolsimg.Quality) consumes the metadata, so a quality-only change to a <MauiSplashScreen> won't trigger regeneration. One-line fix.
  • App-icon incremental skip (gpt-5.5 — valid but pre-existing, not a regression): ProcessAppIcon (ResizetizeImages.cs:219-229) and AndroidAdaptiveIconGenerator (lines 83/127) skip on destinationModified > sourceModified, ignoring InputsFile; combined with File.SetLastWriteTimeUtc(..., DateTime.UtcNow), a quality-only change won't regenerate app icons incrementally. The non-icon path correctly threads InputsFile into Resizer.IsUpToDate. Pre-existing skip the new feature inherits — safe to defer.
  • Doc wording (opus-4.8 — not posted): Best summary says "highest quality for both upscaling and downscaling"; Mitchell-cubic-without-mipmaps can alias more than Auto on heavy downscales. Minor, on an internal enum, and contradicts the established maintainer consensus that Mitchell is the correct high-quality choice — left out to stay conservative.
  • Two earlier CRITICAL review comments (missing </summary>, missing ResizeQuality in mauiimage.inputs) are already RESOLVED at this head SHA — not re-raised.

CI: Red, but NOT PR-caused. Failing legs are AOT macOS, RunOniOS_MauiRelease/TrimFull, and Helix Unit Tests Windows (4h0m timeouts) — AOT/trim/infra issues unrelated to this build-time-only Resizetizer code. Every Resizetizer-exercising leg is green (Build mac/win, Samples, MultiProject, WindowsTemplates, RunOnAndroid, RunOniOS_MauiDebug/NativeAOT). Not blocking on this red.

<WriteLinesToFile
File="$(_ResizetizerInputsFile)"
Lines="@(MauiImage->'File=%(Identity);Link=%(Link);BaseSize=%(BaseSize);Resize=%(Resize);TintColor=%(TintColor);Color=%(Color);IsAppIcon=%(IsAppIcon);ForegroundScale=%(ForegroundScale);ForegroundFile=%(ForegroundFile);MonochromeFile=%(MonochromeFile)')"
Lines="@(MauiImage->'File=%(Identity);Link=%(Link);BaseSize=%(BaseSize);Resize=%(Resize);TintColor=%(TintColor);Color=%(Color);IsAppIcon=%(IsAppIcon);ForegroundScale=%(ForegroundScale);ForegroundFile=%(ForegroundFile);MonochromeFile=%(MonochromeFile);ResizeQuality=%(ResizeQuality)')"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ResizeQuality is correctly added to _ResizetizerInputsFile here, so MauiImage quality changes invalidate the incremental build. But the parallel _MauiSplashInputsFile block just below (lines 339-341) was not updated, even though the Windows splash path consumes this metadata: GenerateSplashAssets calls ResizeImageInfo.Parse(splash) then new SkiaSharpAppIconTools(img, ...) and resizes with img.Quality. So changing only ResizeQuality on a <MauiSplashScreen> (without editing the image file) won't change _MauiSplashInputsFile, and ProcessMauiSplashScreens will skip regeneration until a clean/rebuild. Consider appending ;ResizeQuality=%(ResizeQuality) to the _MauiSplashInputsFile Lines for consistency with the MauiImage line. Non-blocking.

{
// resize the background
var tools = SkiaSharpTools.Create(Info.IsVector, Info.Filename, dpi.Size, Info.Color, null, Logger);
var tools = SkiaSharpTools.Create(Info.IsVector, Info.Filename, dpi.Size, Info.Color, null, Info.Quality, Logger);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Heads-up (pre-existing limitation, not introduced by this PR): Info.Quality now feeds app-icon resampling, but the freshness check just above (if (destinationModified > backgroundModified), plus the same pattern in ProcessForeground/ProcessMonochrome and ResizetizeImages.ProcessAppIcon) compares only the source-image timestamp vs the destination and ignores InputsFile. Since ResizetizeImages stamps every generated file to DateTime.UtcNow, the destination is always newer than the source after the first build, so changing only ResizeQuality on an app icon won't regenerate the bitmaps incrementally (a clean/rebuild or touching the source is required). The non-icon path avoids this by threading InputsFile into Resizer.IsUpToDate. Safe to defer, but consider wiring InputsFile into these icon freshness checks so the new option is honored on incremental builds.

@kubaflo

This comment has been minimized.

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jun 21, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Expert Review — 2 findings

See inline comments for details.

{
// resize the background
var tools = SkiaSharpTools.Create(Info.IsVector, Info.Filename, dpi.Size, Info.Color, null, Logger);
var tools = SkiaSharpTools.Create(Info.IsVector, Info.Filename, dpi.Size, Info.Color, null, Info.Quality, Logger);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[major] Resizetizer incremental correctness — This Android app-icon path now renders with Info.Quality, but the skip checks above still compare only source and destination timestamps. A metadata-only change from ResizeQuality="Fastest" to ResizeQuality="Auto" updates _ResizetizerInputsFile and reruns the task, but Generate() will skip existing adaptive icon parts and then refresh their timestamps without regenerating pixels. Thread the inputs file/metadata timestamp into these app-icon up-to-date checks, or otherwise include Info.Quality in the invalidation logic.

@MauiBot MauiBot added s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Jun 21, 2026
MauiBot

This comment was marked as outdated.

@kubaflo

This comment has been minimized.

@github-actions github-actions Bot added the s/agent-review-in-progress AI review is currently running for this PR label Jun 26, 2026

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Expert Review — 5 findings

See inline comments for details.


if (hasBackground)
backgroundTools = SkiaSharpTools.Create(info.IsVector, info.Filename, null, null, null, logger);
backgroundTools = SkiaSharpTools.Create(info.IsVector, info.Filename, null, null, null, info.Quality, logger);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[major] Build & MSBuild — App-icon outputs are not invalidated by metadata-only ResizeQuality changes

Threading info.Quality into the app-icon tools is correct for clean builds, but incremental builds still skip the actual appTool.Resize(...) call when the generated icon PNG is newer than the source image (ResizetizeImages.ProcessAppIcon compares only source/destination timestamps). Concrete failure: build once with <MauiIcon ResizeQuality="Fastest" />, then change only the metadata to Auto/Best; _ResizetizerInputsFile changes and the target reruns, but the per-icon skip preserves the old pixels. Include the inputs file/metadata timestamp in the app-icon freshness check or remove that inner skip so metadata changes regenerate all app icon outputs.

{
// resize the background
var tools = SkiaSharpTools.Create(Info.IsVector, Info.Filename, dpi.Size, Info.Color, null, Logger);
var tools = SkiaSharpTools.Create(Info.IsVector, Info.Filename, dpi.Size, Info.Color, null, Info.Quality, Logger);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[major] Build & MSBuild — Android adaptive icon parts can stay stale after ResizeQuality changes

This wires Info.Quality into the background renderer, but the skip guard immediately above still checks only destinationModified > backgroundModified (and the foreground/monochrome paths have the same pattern). On a metadata-only ResizeQuality change, the target reruns because _ResizetizerInputsFile changed, yet _background.png, _foreground.png, and _monochrome.png can all be skipped because the source image timestamp did not change. Include the inputs-file timestamp/rendering metadata in these per-part freshness checks so adaptive icon parts are regenerated when quality changes.

<WriteLinesToFile
File="$(_ResizetizerInputsFile)"
Lines="@(MauiImage->'File=%(Identity);Link=%(Link);BaseSize=%(BaseSize);Resize=%(Resize);TintColor=%(TintColor);Color=%(Color);IsAppIcon=%(IsAppIcon);ForegroundScale=%(ForegroundScale);ForegroundFile=%(ForegroundFile);MonochromeFile=%(MonochromeFile)')"
Lines="@(MauiImage->'File=%(Identity);Link=%(Link);BaseSize=%(BaseSize);Resize=%(Resize);TintColor=%(TintColor);Color=%(Color);IsAppIcon=%(IsAppIcon);ForegroundScale=%(ForegroundScale);ForegroundFile=%(ForegroundFile);MonochromeFile=%(MonochromeFile);ResizeQuality=%(ResizeQuality)')"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[major] Build & MSBuild — Splash screen quality changes do not invalidate incremental outputs

ResizeQuality is added to the MauiImage inputs file here, but the sibling _MauiSplashInputsFile template still omits it. Since splash tasks also parse ResizeImageInfo, a clean build can honor <MauiSplashScreen ResizeQuality=...>, but changing only that metadata later leaves ProcessMauiSplashScreens up to date and serves the previous splash assets. Add ;ResizeQuality=%(ResizeQuality) to the _MauiSplashInputsFile Lines= template as well.


/// <summary>
/// Highest quality output using Mitchell cubic resampler.
/// Provides highest quality for both upscaling and downscaling

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[moderate] Logic and Correctness — Best docs overstate downscaling quality

The XML doc says Best provides the highest quality for both upscaling and downscaling, but the implementation maps Best to Mitchell cubic without mipmaps while Auto uses bilinear+mipmaps. For large downscales, mipmapped sampling can produce fewer aliasing artifacts than cubic-only sampling. Please reword this to avoid promising that Best is always superior for downscaling, e.g. describe it as Mitchell cubic/high-fidelity and note that Auto preserves the existing mipmapped downscale behavior.

}

[Fact]
public void ResizeQualityMetadataIsRespectedEndToEnd()

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[minor] Regression Prevention / Test Coverage — Quality tests only cover normal MauiImage items

The new end-to-end coverage exercises ResizeQuality for normal image resize output, but not the app-icon/adaptive-icon or splash paths where this PR also threads quality through. Those paths have separate incremental skip logic, so the current tests would not catch stale outputs after metadata-only ResizeQuality changes. Please add coverage for at least Android adaptive icon/app icon regeneration and splash input invalidation when only ResizeQuality changes.

@MauiBot MauiBot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

AI Review Summary

@jfversluis — new AI review results are available based on this last commit: 562562f. To request a fresh review after new comments or commits, comment /review rerun.

Gate Inconclusive Confidence Low Platform Android


🗂️ Review Sessions — click to expand
🚦 Gate — Test Before & After Fix

Gate Result: ⚠️ INCONCLUSIVE

Platform: ANDROID · Base: net11.0 · Merge base: 630ffae0

🩺 Base branch does not compile — the without-fix build failed. The gate's "does the test fail without the fix" check is unreliable here; this usually means main is broken or a merge-base file went missing. Investigate before trusting this gate.

Test Without Fix (expect FAIL) With Fix (expect PASS)
🧪 ResizeImageInfoTests ResizeImageInfoTests 🛠️ BUILD ERROR ✅ PASS — 5s
🧪 ResizetizeImagesTests ResizetizeImagesTests 🛠️ BUILD ERROR ❌ FAIL — 6s
🧪 SkiaSharpRasterToolsTests SkiaSharpRasterToolsTests 🛠️ BUILD ERROR ❌ FAIL — 4s
🧪 SkiaSharpSvgToolsTests SkiaSharpSvgToolsTests 🛠️ BUILD ERROR ❌ FAIL — 6s
🔴 Without fix — 🧪 ResizeImageInfoTests: 🛠️ BUILD ERROR · 10s
  Determining projects to restore...
  Restored /home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj (in 2.67 sec).
  1 of 2 projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]11.0.0-ci+azdo.14499461
  Resizetizer -> /home/vsts/work/1/s/artifacts/bin/Resizetizer/Debug/netstandard2.0/Microsoft.Maui.Resizetizer.dll
/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 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(386,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/SkiaSharpRasterToolsTests.cs(292,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/SkiaSharpRasterToolsTests.cs(305,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/SkiaSharpSvgToolsTests.cs(399,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/SkiaSharpRasterToolsTests.cs(318,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/SkiaSharpSvgToolsTests.cs(416,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/SkiaSharpRasterToolsTests.cs(331,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/SkiaSharpSvgToolsTests.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(348,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/SkiaSharpSvgToolsTests.cs(470,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/SkiaSharpSvgToolsTests.cs(477,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/SkiaSharpSvgToolsTests.cs(511,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/SkiaSharpRasterToolsTests.cs(375,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(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(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(445,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(452,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(486,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/ResizeImageInfoTests.cs(69,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(75,54): error CS0117: 'ResizeImageInfo' does not contain a definition for 'DefaultResizeQuality' [/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(87,6): error CS0117: 'ResizeImageInfo' does not contain a definition for 'Quality' [/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(90,32): 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(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,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,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(147,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 — 🧪 ResizeImageInfoTests: PASS ✅ · 5s
  Determining projects to restore...
  All projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]11.0.0-ci+azdo.14499461
  Resizetizer -> /home/vsts/work/1/s/artifacts/bin/Resizetizer/Debug/netstandard2.0/Microsoft.Maui.Resizetizer.dll
  Resizetizer.UnitTests -> /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/Microsoft.Maui.Resizetizer.UnitTests.dll
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-preview.6.26323.106)
[xUnit.net 00:00:00.13]   Discovering: Microsoft.Maui.Resizetizer.UnitTests
[xUnit.net 00:00:00.44]   Discovered:  Microsoft.Maui.Resizetizer.UnitTests
[xUnit.net 00:00:00.46]   Starting:    Microsoft.Maui.Resizetizer.UnitTests
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "IMAGE.jpeg", isVector: False) [16 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "IMAGE.png", isVector: False) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "IMAGE.svg", isVector: True) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "image.svg", isVector: True) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "image.png", isVector: False) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "image.JPEG", isVector: False) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "image.jpeg", isVector: False) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "IMAGE.SVG", isVector: True) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "image.SVG", isVector: True) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "IMAGE.PNG", isVector: False) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "IMAGE.JPEG", isVector: False) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.ReturnsCorrectFolder(filename: "image.PNG", isVector: False) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.SupportsNoExtension(filename: "image") [1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.SupportsNoExtension(filename: "IMAGE") [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.DoesNotCrashOnNullOrEmpty(filename: null) [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+IsVector.DoesNotCrashOnNullOrEmpty(filename: "") [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityParsingIsCaseInsensitive(metadataValue: "best") [37 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityParsingIsCaseInsensitive(metadataValue: "auto") [2 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityParsingIsCaseInsensitive(metadataValue: "FASTEST") [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.DefaultQualityConstantIsAuto [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityParsedFromTaskItem(metadataValue: "Fastest") [< 1 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityParsedFromTaskItem(metadataValue: "Auto") [< 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") [2 ms]
  Passed Microsoft.Maui.Resizetizer.Tests.ResizeImageInfoTests+ResizeQualityTests.QualityCanBeSet(qualityName: "Best") [< 1 ms]
[xUnit.net 00:00:00.62]   Finished:    Microsoft.Maui.Resizetizer.UnitTests
  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: 29
     Passed: 29
 Total time: 1.2717 Seconds

🔴 Without fix — 🧪 ResizetizeImagesTests: 🛠️ BUILD ERROR · 4s
  Determining projects to restore...
  All projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]11.0.0-ci+azdo.14499461
  Resizetizer -> /home/vsts/work/1/s/artifacts/bin/Resizetizer/Debug/netstandard2.0/Microsoft.Maui.Resizetizer.dll
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(69,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/SkiaSharpSvgToolsTests.cs(373,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/SkiaSharpSvgToolsTests.cs(386,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/SkiaSharpSvgToolsTests.cs(399,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/SkiaSharpRasterToolsTests.cs(292,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/SkiaSharpRasterToolsTests.cs(305,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/ResizeImageInfoTests.cs(75,54): error CS0117: 'ResizeImageInfo' does not contain a definition for 'DefaultResizeQuality' [/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(416,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/ResizeImageInfoTests.cs(87,6): error CS0117: 'ResizeImageInfo' does not contain a definition for 'Quality' [/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(90,32): 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(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/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/SkiaSharpRasterToolsTests.cs(318,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/SkiaSharpRasterToolsTests.cs(331,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/SkiaSharpSvgToolsTests.cs(470,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/SkiaSharpSvgToolsTests.cs(477,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/SkiaSharpSvgToolsTests.cs(511,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/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,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/SkiaSharpRasterToolsTests.cs(348,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/ResizeImageInfoTests.cs(147,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/SkiaSharpRasterToolsTests.cs(375,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(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(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(445,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(452,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(486,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 — 🧪 ResizetizeImagesTests: FAIL ❌ · 6s

(truncated to last 15,000 chars)

 No such file or directory
[xUnit.net 00:00:01.37]       
[xUnit.net 00:00:01.37]          at SkiaSharp.SkiaApi.sk_compatpaint_new()
[xUnit.net 00:00:01.38]          at SkiaSharp.SkiaApi.sk_compatpaint_new()
[xUnit.net 00:00:01.38]          at SkiaSharp.SKPaint..ctor()
[xUnit.net 00:00:01.38]          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
[xUnit.net 00:00:01.38]          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
[xUnit.net 00:00:01.38]          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
[xUnit.net 00:00:01.38]          at Microsoft.Maui.Resizetizer.Resizer.get_Tools() in /_/src/SingleProject/Resizetizer/src/Resizer.cs:line 28
[xUnit.net 00:00:01.38]          at Microsoft.Maui.Resizetizer.Resizer.Rasterize(DpiPath dpi, String destination) in /_/src/SingleProject/Resizetizer/src/Resizer.cs:line 114
[xUnit.net 00:00:01.38]          at Microsoft.Maui.Resizetizer.Resizer.Resize(DpiPath dpi, String inputsFile) in /_/src/SingleProject/Resizetizer/src/Resizer.cs:line 105
[xUnit.net 00:00:01.38]          at Microsoft.Maui.Resizetizer.ResizetizeImages.ProcessImageResize(ResizeImageInfo img, DpiPath[] dpis, ConcurrentBag`1 resizedImages) in /_/src/SingleProject/Resizetizer/src/ResizetizeImages.cs:line 244
[xUnit.net 00:00:01.38]          at Microsoft.Maui.Resizetizer.ResizetizeImages.<>c__DisplayClass34_0.<ExecuteAsync>b__0(ResizeImageInfo img) in /_/src/SingleProject/Resizetizer/src/ResizetizeImages.cs:line 73
[xUnit.net 00:00:01.38]       Stack Trace:
[xUnit.net 00:00:01.38]         /_/src/SingleProject/Resizetizer/test/UnitTests/ResizetizeImagesTests.cs(78,0): at Microsoft.Maui.Resizetizer.Tests.ResizetizeImagesTests.ExecuteForPlatformApp.BasicImageProcessingWorks(String image)
[xUnit.net 00:00:01.38]            at InvokeStub_ExecuteForPlatformApp.BasicImageProcessingWorks(Object, Span`1)
[xUnit.net 00:00:01.38]            at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
[xUnit.net 00:00:01.38]       Output:
[xUnit.net 00:00:01.38]         Using DestinationDirectory=/tmp/Microsoft.Maui.Resizetizer.Tests/ResizetizeImagesTests+ExecuteForWindows/rwgy5osu.tiv
[xUnit.net 00:00:01.38]         MESSAGE: Resizing /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/images/dotnet_bot.svg
[xUnit.net 00:00:01.38]         ERROR  : There was an exception processing the image '/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/images/dotnet_bot.svg'. System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
[xUnit.net 00:00:01.38]         /home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.38]         /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.38]         /home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.38]         /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.38]         /home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.38]         /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.38]         /home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.38]         /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.38]         
[xUnit.net 00:00:01.38]            at SkiaSharp.SkiaApi.sk_compatpaint_new()
[xUnit.net 00:00:01.38]            at SkiaSharp.SkiaApi.sk_compatpaint_new()
[xUnit.net 00:00:01.38]            at SkiaSharp.SKPaint..ctor()
[xUnit.net 00:00:01.38]            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
[xUnit.net 00:00:01.38]            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
[xUnit.net 00:00:01.38]            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
[xUnit.net 00:00:01.38]            at Microsoft.Maui.Resizetizer.Resizer.get_Tools() in /_/src/SingleProject/Resizetizer/src/Resizer.cs:line 28
[xUnit.net 00:00:01.38]            at Microsoft.Maui.Resizetizer.Resizer.Rasterize(DpiPath dpi, String destination) in /_/src/SingleProject/Resizetizer/src/Resizer.cs:line 114
[xUnit.net 00:00:01.38]            at Microsoft.Maui.Resizetizer.Resizer.Resize(DpiPath dpi, String inputsFile) in /_/src/SingleProject/Resizetizer/src/Resizer.cs:line 105
[xUnit.net 00:00:01.38]            at Microsoft.Maui.Resizetizer.ResizetizeImages.ProcessImageResize(ResizeImageInfo img, DpiPath[] dpis, ConcurrentBag`1 resizedImages) in /_/src/SingleProject/Resizetizer/src/ResizetizeImages.cs:line 244
[xUnit.net 00:00:01.38]            at Microsoft.Maui.Resizetizer.ResizetizeImages.<>c__DisplayClass34_0.<ExecuteAsync>b__0(ResizeImageInfo img) in /_/src/SingleProject/Resizetizer/src/ResizetizeImages.cs:line 73
[xUnit.net 00:00:01.38]         Cleaning up directories=/tmp/Microsoft.Maui.Resizetizer.Tests/ResizetizeImagesTests+ExecuteForWindows/rwgy5osu.tiv
[xUnit.net 00:00:01.39]       There was an exception processing the image '/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/images/warning.svg'. System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
[xUnit.net 00:00:01.39]       /home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.39]       /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.39]       /home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.39]       /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.39]       /home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.39]       /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.39]       /home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.39]       /home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory
[xUnit.net 00:00:01.39]       
[xUnit.net 00:00:01.39]          at SkiaSharp.SkiaApi.sk_compatpaint_new()
[xUnit.net 00:00:01.39]          at SkiaSharp.SkiaApi.sk_compatpaint_new()
[xUnit.net 00:00:01.39]          at SkiaSharp.SKPaint..ctor()
Unhandled exception. System.TypeInitializationException: The type initializer for 'SkiaSharp.SKObject' threw an exception.
 ---> System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory
   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)
   --- End of inner exception stack trace ---
   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()
[xUnit.net 00:00:01.36]     Microsoft.Maui.Resizetizer.Tests.ResizetizeImagesTests+ExecuteForiOS.SingleVectorAppIconWithOnlyPathSucceedsWithVectors(name: "camera", alias: "camera.png", outputName: "camera") [FAIL]
[xUnit.net 00:00:01.36]     Microsoft.Maui.Resizetizer.Tests.ResizetizeImagesTests+ExecuteForWindows.BasicImageProcessingWorks(image: "prismicon.svg") [FAIL]
[xUnit.net 00:00:01.37]     Microsoft.Maui.Resizetizer.Tests.ResizetizeImagesTests+ExecuteForiOS.SingleVectorAppIconWithOnlyPathSucceedsWithVectors(name: "camera", alias: "folder/the_alias.png", outputName: "the_alias") [FAIL]
[xUnit.net 00:00:01.37]     Microsoft.Maui.Resizetizer.Tests.ResizetizeImagesTests+ExecuteForWindows.BasicImageProcessingWorks(image: "dotnet_bot.svg") [FAIL]
[xUnit.net 00:00:01.39]     Microsoft.Maui.Resizetizer.Tests.ResizetizeImagesTests+ExecuteForWindows.BasicImageProcessingWorks(image: "warning.svg") [FAIL]
The active test run was aborted. Reason: Test host process crashed : Unhandled exception. System.TypeInitializationException: The type initializer for 'SkiaSharp.SKObject' threw an exception.
 ---> System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory
   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)
   --- End of inner exception stack trace ---
   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()


Total tests: Unknown
Test Run Aborted.
     Passed: 1
     Failed: 8
 Total time: 3.0652 Seconds

🔴 Without fix — 🧪 SkiaSharpRasterToolsTests: 🛠️ BUILD ERROR · 3s
  Determining projects to restore...
  All projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]11.0.0-ci+azdo.14499461
  Resizetizer -> /home/vsts/work/1/s/artifacts/bin/Resizetizer/Debug/netstandard2.0/Microsoft.Maui.Resizetizer.dll
/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 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(386,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/SkiaSharpSvgToolsTests.cs(399,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/ResizeImageInfoTests.cs(69,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/SkiaSharpSvgToolsTests.cs(416,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/ResizeImageInfoTests.cs(75,54): error CS0117: 'ResizeImageInfo' does not contain a definition for 'DefaultResizeQuality' [/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(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/ResizeImageInfoTests.cs(87,6): error CS0117: 'ResizeImageInfo' does not contain a definition for 'Quality' [/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(90,32): 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(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,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/SkiaSharpSvgToolsTests.cs(470,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/SkiaSharpSvgToolsTests.cs(477,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/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/SkiaSharpSvgToolsTests.cs(511,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/ResizeImageInfoTests.cs(147,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/SkiaSharpRasterToolsTests.cs(292,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/SkiaSharpRasterToolsTests.cs(305,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/SkiaSharpRasterToolsTests.cs(318,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/SkiaSharpRasterToolsTests.cs(331,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/SkiaSharpRasterToolsTests.cs(348,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/SkiaSharpRasterToolsTests.cs(375,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(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(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(445,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(452,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(486,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: FAIL ❌ · 4s

(truncated to last 15,000 chars)

asterTools..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.SkiaSharpRasterTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs:line 12
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.FastestQualityMapsToNearestNeighborSampling() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 319
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.ResizeWithFastestQualityProducesValidImage [1 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.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.SkiaSharpRasterTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs:line 12
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.ResizeWithFastestQualityProducesValidImage() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 333
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.ResizeWithBestQualityProducesValidImage [< 1 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.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.SkiaSharpRasterTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs:line 12
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.ResizeQualityTests.ResizeWithBestQualityProducesValidImage() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 350
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.BasicNoScaleReturnsOriginalSize [4 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.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.SkiaSharpRasterTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs:line 12
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.BasicNoScaleReturnsOriginalSize() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 53
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.ColorizedReturnsColored [< 1 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.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.SkiaSharpRasterTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs:line 12
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.ColorizedReturnsColored() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 157
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.BasicNoScaleNoResizeReturnsOriginalSize [3 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.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.SkiaSharpRasterTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs:line 12
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests.Resize.BasicNoScaleNoResizeReturnsOriginalSize() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpRasterToolsTests.cs:line 34
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Test Run Failed.
Total tests: 23
     Failed: 23
 Total time: 1.0907 Seconds

🔴 Without fix — 🧪 SkiaSharpSvgToolsTests: 🛠️ BUILD ERROR · 3s
  Determining projects to restore...
  All projects are up-to-date for restore.
  ##vso[build.updatebuildnumber]11.0.0-ci+azdo.14499461
  Resizetizer -> /home/vsts/work/1/s/artifacts/bin/Resizetizer/Debug/netstandard2.0/Microsoft.Maui.Resizetizer.dll
/home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(69,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(75,54): error CS0117: 'ResizeImageInfo' does not contain a definition for 'DefaultResizeQuality' [/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(87,6): error CS0117: 'ResizeImageInfo' does not contain a definition for 'Quality' [/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(90,32): 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(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,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,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/SkiaSharpRasterToolsTests.cs(292,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/SkiaSharpRasterToolsTests.cs(305,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/SkiaSharpRasterToolsTests.cs(318,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/SkiaSharpSvgToolsTests.cs(373,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/SkiaSharpSvgToolsTests.cs(386,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/SkiaSharpSvgToolsTests.cs(399,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/ResizeImageInfoTests.cs(147,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/SkiaSharpRasterToolsTests.cs(331,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/SkiaSharpRasterToolsTests.cs(348,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/SkiaSharpSvgToolsTests.cs(416,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/SkiaSharpSvgToolsTests.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(375,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(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(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/SkiaSharpSvgToolsTests.cs(470,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/SkiaSharpSvgToolsTests.cs(477,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/SkiaSharpSvgToolsTests.cs(511,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/SkiaSharpRasterToolsTests.cs(445,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(452,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(486,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: FAIL ❌ · 6s

(truncated to last 15,000 chars)

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.SkiaSharpSvgTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs:line 13
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.ColorsInCssCanBeUsed() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 260
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.ColorizedWithAlphaWithColorsReplacesColors [1 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.SkiaSharpSvgTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs:line 13
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.ColorizedWithAlphaWithColorsReplacesColors() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 239
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.ColorizedWithNamedReturnsColored [2 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.SkiaSharpSvgTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs:line 13
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.ColorizedWithNamedReturnsColored() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 197
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.BasicNoScaleReturnsOriginalSize [< 1 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.SkiaSharpSvgTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs:line 13
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.BasicNoScaleReturnsOriginalSize() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 33
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.SvgImageWithDecodingIssue_15442 [2 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.SkiaSharpSvgTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs:line 13
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.SvgImageWithDecodingIssue_15442() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 279
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
  Failed Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.WithBaseSizeAndScaleResizes [4 ms]
  Error Message:
   System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp.so: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/libSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/.dotnet/shared/Microsoft.NETCore.App/11.0.0-preview.6.26323.106/liblibSkiaSharp: cannot open shared object file: No such file or directory
/home/vsts/work/1/s/artifacts/bin/Resizetizer.UnitTests/Debug/net11.0/liblibSkiaSharp: cannot open shared object file: No such file or directory

  Stack Trace:
     at SkiaSharp.SkiaApi.sk_compatpaint_new()
   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.SkiaSharpSvgTools..ctor(ResizeImageInfo info, ILogger logger) in /_/src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs:line 13
   at Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests.Resize.WithBaseSizeAndScaleResizes() in /_/src/SingleProject/Resizetizer/test/UnitTests/SkiaSharpSvgToolsTests.cs:line 135
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Test Run Failed.
Total tests: 24
     Failed: 24
 Total time: 1.5330 Seconds

⚠️ Failure Details (7 tests)
  • 🛠️ 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...
  • 🛠️ ResizetizeImagesTests without fix: build failed before tests could run
    • /home/vsts/work/1/s/src/SingleProject/Resizetizer/test/UnitTests/ResizeImageInfoTests.cs(69,43): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension...
  • 🛠️ 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/ResizeImageInfoTests.cs(69,43): error CS1061: 'ResizeImageInfo' does not contain a definition for 'Quality' and no accessible extension...
  • ResizetizeImagesTests FAILED with fix (should pass)
    • Device tests: 8 of 9 failed
  • SkiaSharpRasterToolsTests FAILED with fix (should pass)
    • Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.DifferentQualitiesProduceDifferentPixelOutput [8 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.ColorizedWithColorsReplacesColors [8 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.DefaultQualityMapsToLinearMipmapSampling [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.ColorizedWithAlphaReturnsColored [3 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.WithBaseSizeResizes [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.DefaultQualityProducesIdenticalOutputToExplicitAuto [3 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.ColorizedWithAlphaWithColorsReplacesColors [2 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.BasicWithColorsKeepsColors [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.BestQualityMapsToMitchellCubicSampling [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.BestQualityProducesDifferentPixelOutputThanAuto [1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.WithBaseSizeAndScaleResizes [6 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.BasicWithDownScaleReturnsDownScaledSize [3 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.ColorizedWithNamedReturnsColored [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.AutoQualityMapsToLinearMipmapSampling [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.FastestQualityMapsToNearestNeighborSampling [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.ResizeWithFastestQualityProducesValidImage [1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+ResizeQualityTests.ResizeWithBestQualityProducesValidImage [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.BasicNoScaleReturnsOriginalSize [4 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.ColorizedReturnsColored [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpRasterToolsTests+Resize.BasicNoScaleNoResizeReturnsOriginalSize [3 ms]
    • System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using gl...; System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its depend...
  • SkiaSharpSvgToolsTests FAILED with fix (should pass)
    • Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.WithBaseSizeResizes [12 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.BasicNoScaleNoResizeReturnsOriginalSize [1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+ResizeQualityTests.BestQualityMapsToMitchellCubicSampling [2 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+ResizeQualityTests.ResizeWithBestQualityProducesValidImage [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+ResizeQualityTests.ResizeWithFastestQualityProducesValidImage [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.ColorizedReturnsColored [9 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.BasicWithColorsKeepsColors [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+ResizeQualityTests.FastestQualityMapsToNearestNeighborSampling [5 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+ResizeQualityTests.DefaultQualityMapsToLinearMipmapSampling [3 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.ColorizedWithColorsReplacesColors [10 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.BasicWithDownScaleReturnsDownScaledSize [1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+ResizeQualityTests.DefaultQualityProducesIdenticalOutputToExplicitAuto [5 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.ColorizedWithAlphaReturnsColored [3 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+ResizeQualityTests.DifferentQualitiesProduceDifferentPixelOutput [2 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.SvgImageWithDecodingIssue_12109 [2 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.ColorsInCssCanBeUsed [2 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.ColorizedWithAlphaWithColorsReplacesColors [1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.ColorizedWithNamedReturnsColored [2 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.BasicNoScaleReturnsOriginalSize [< 1 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.SvgImageWithDecodingIssue_15442 [2 ms]; Microsoft.Maui.Resizetizer.Tests.SkiaSharpSvgToolsTests+Resize.WithBaseSizeAndScaleResizes [4 ms]
    • System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using gl...; System.DllNotFoundException : Unable to load shared library 'libSkiaSharp' or one of its depend...
📁 Fix files reverted (9 files)
  • src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs
  • src/SingleProject/Resizetizer/src/ResizeImageInfo.cs
  • src/SingleProject/Resizetizer/src/Resizer.cs
  • src/SingleProject/Resizetizer/src/SkiaSharpAppIconTools.cs
  • src/SingleProject/Resizetizer/src/SkiaSharpImaginaryTools.cs
  • src/SingleProject/Resizetizer/src/SkiaSharpRasterTools.cs
  • src/SingleProject/Resizetizer/src/SkiaSharpSvgTools.cs
  • src/SingleProject/Resizetizer/src/SkiaSharpTools.cs
  • src/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 - Resizetizer image resize quality configuration
PR: #34559 - Add configurable ResizeQuality for Resizetizer
Platforms Affected: Android primarily for adaptive icon incremental behavior; Resizetizer image generation cross-platform
Files Changed: 9 implementation, 4 test

Key Findings

  • PR adds ResizeQuality (Auto, Best, Fastest) and maps it to SKSamplingOptions, preserving default Auto behavior.
  • PR already fixes prior review findings for enum XML docs and adding ResizeQuality to _ResizetizerInputsFile.
  • Android adaptive icon part generation still has an inner timestamp skip that compares only destination vs source file timestamps, so metadata-only quality changes can leave stale generated foreground/background/monochrome PNGs.
  • Local GitHub CLI was unauthenticated; public PR API/diff and local branch content were used. Gate result was provided as inconclusive and was not rerun.

Code Review Summary

Verdict: NEEDS_CHANGES
Confidence: low
Errors: 1 | Warnings: 1 | Suggestions: 0

Key code review findings:

  • AndroidAdaptiveIconGenerator.cs:95, :139, :182 — adaptive icon parts consume Info.Quality but skip regeneration using only source/destination timestamps.
  • ⚠️ Microsoft.Maui.Resizetizer.After.targets:341 — splash input tracking does not include ResizeQuality.

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #34559 Thread ResizeQuality through Resizetizer and include it in MauiImage target inputs ⚠️ INCONCLUSIVE (Gate) ResizeImageInfo.cs, SkiaSharpTools.cs, platform/icon callers, targets, tests Original PR; core mapping sound but Android adaptive-icon inner cache remains suspect

🔬 Code Review — Deep Analysis

Code Review — PR #34559

Independent Assessment

What this changes: Adds ResizeQuality metadata for Resizetizer and maps it to SkiaSharp SKSamplingOptions.
Inferred motivation: Replace deprecated/ineffective SKPaint.FilterQuality with explicit resampling control while preserving default output.

Reconciliation with PR Narrative

Author claims: Configurable Auto/Best/Fastest, default preserves existing behavior, metadata-driven.
Agreement/disagreement: Core mapping and default behavior look sound. Incremental app-icon invalidation does not fully honor metadata-only quality changes.

Prior Review Reconciliation

Prior ❌ Error Finding Source Status Evidence
Missing XML </summary> and missing ResizeQuality in mauiimage.inputs prior PR comments ✅ Fixed Current ResizeQuality.cs docs are valid; Microsoft.Maui.Resizetizer.After.targets:329 includes ResizeQuality.
[major] Android app-icon incremental correctness MauiBot/agent inline review ❌ Unresolved AndroidAdaptiveIconGenerator.cs:95/139/182 consume Info.Quality, but skip checks still compare only destination vs source timestamps.

Blast Radius Assessment

  • Runs for all instances: No — only Resizetizer image/icon processing.
  • Startup impact: No.
  • Static/shared state: No.

CI Status

  • Required-check result: undetermined locally; gh is unauthenticated. Public PR data shows gate was already inconclusive/red in prior phase.
  • Classification: undetermined; not treated as a failing fix per prompt.
  • Action taken: confidence capped low.

Findings

❌ Error — Android app-icon quality changes can leave stale generated icons

src/SingleProject/Resizetizer/src/AndroidAdaptiveIconGenerator.cs:95 (also 139, 182) now renders adaptive icon parts with Info.Quality, but the method skips generation when destination is newer than the source image. A metadata-only change from ResizeQuality="Fastest" to ResizeQuality="Auto" updates _ResizetizerInputsFile and reruns the target, but these per-file checks can still skip and preserve old pixels. Thread metadata freshness into icon freshness checks, remove the inner stale skip, or otherwise include rendering metadata in invalidation.

⚠️ Warning — Splash input tracking misses ResizeQuality

Microsoft.Maui.Resizetizer.After.targets:341 writes _MauiSplashInputsFile without ResizeQuality. Splash code parses ResizeImageInfo, so splash quality metadata may not trigger regeneration if splash items support/flow this metadata.

Failure-Mode Probing

  • Metadata-only quality change after first build: target reruns, but Android adaptive icon part generation can skip stale outputs.
  • Clean build: works; quality propagates correctly.
  • Invalid named metadata: falls back to Auto; numeric out-of-range still falls through to default sampling.

Verdict: NEEDS_CHANGES

Confidence: low
Summary: Core implementation is good, but adaptive icon incremental invalidation remains a concrete risk for Android. Local CI/check status could not be fully classified because gh is unauthenticated and the Linux test environment lacks SkiaSharp native runtime files.


🛠️ Fix — Analysis & Comparison

Fix Candidates

# Source Approach Test Result Files Changed Notes
1 maui-expert-reviewer Metadata-aware sidecar stamp for adaptive icon parts ❌ Design rejected 0 files Sidecars conflict with intermediate cleanup/packaging unless extra plumbing is added
2 maui-expert-reviewer Remove Android adaptive-icon inner timestamp skips ⚠️ BLOCKED 2 files Built, but runtime test blocked by missing libSkiaSharp.so; simple but increases regeneration/timestamp churn
3 maui-expert-reviewer Compare adaptive icon destinations against max(source timestamp, _ResizetizerInputsFile timestamp) ⚠️ BLOCKED 3 files Built, but runtime test blocked by missing libSkiaSharp.so; strongest targeted alternative
4 maui-expert-reviewer Render temp PNG and byte-compare before replacing adaptive icon output ⚠️ BLOCKED 2 files Built, but runtime test blocked by missing libSkiaSharp.so; avoids unchanged timestamp churn at higher render/I/O cost
PR PR #34559 Thread ResizeQuality through Resizetizer and add it to MauiImage target inputs ⚠️ INCONCLUSIVE (Gate) 13 files Original PR; core mapping sound but adaptive-icon inner timestamp skip remains a concern

Candidate Narratives

try-fix-1 — Sidecar fingerprint stamps

Add per-output adaptive-icon stamp files containing source metadata, DPI, ResizeQuality, colors, tint, foreground scale, and part kind. This was rejected before code changes because sidecars under _MauiIntermediateImages can be deleted by the target cleanup or accidentally enter resource handling unless additional FileWrites/resource-filter plumbing is added. No test was run.

try-fix-2 — Remove adaptive-icon inner skips

Remove destination-vs-source timestamp skips from background, foreground, and monochrome adaptive icon part generation. This ensures metadata-only changes regenerate after the MSBuild target runs. Diff captured in try-fix-2/fix.diff. Test assembly built, but runtime failed before assertions with missing libSkiaSharp.so.

try-fix-3 — Honor _ResizetizerInputsFile timestamp

Pass ResizetizeImages.InputsFile modified time into AndroidAdaptiveIconGenerator and compare each destination against the newer of source timestamp and inputs-file timestamp. Diff captured in try-fix-3/fix.diff. Test assembly built, but runtime failed before assertions with missing libSkiaSharp.so. This is the best alternative on design merits because it reuses the PR's existing metadata invalidation and preserves most skip behavior.

try-fix-4 — Render temp output and byte-compare

Render adaptive icon parts to a temp PNG and replace the destination only when bytes differ. Diff captured in try-fix-4/fix.diff. Test assembly built, but runtime failed before assertions with missing libSkiaSharp.so. This avoids stale pixels and unchanged timestamp churn, but costs extra rendering and file I/O whenever the generator runs.

Cross-Pollination

Model Round New Ideas? Details
maui-expert-reviewer 1 Yes Proposed sidecar fingerprints; rejected after design review due intermediate cleanup/resource concerns
maui-expert-reviewer 2 Yes Proposed removing inner timestamp skips; implemented and built but test runtime blocked
maui-expert-reviewer 3 Yes Proposed using _ResizetizerInputsFile timestamp; implemented and built but test runtime blocked
maui-expert-reviewer 4 Yes Proposed temp render + byte compare; implemented and built but test runtime blocked
maui-expert-reviewer Exhaustion No superior new idea Remaining ideas are variations of stateful fingerprints, broad invalidation, or render-to-compare tradeoffs

Exhausted: Yes
Selected Fix: Candidate #3 if an alternative is required — it is the most targeted candidate and reuses the PR's existing _ResizetizerInputsFile metadata invalidation. However, no candidate passed runtime validation in this environment, so it is not demonstrably better than the PR fix.


📝 Recommended PR Title & Description

Assessment: ✏️ Recommend updating — the current description is strong, but the winning fix adds metadata-invalidation details not covered by the original PR text and the title can be more component-searchable.

Recommended title

Resizetizer: Add configurable ResizeQuality

Recommended description

## Description

Adds a configurable `ResizeQuality` option to Resizetizer, allowing developers to control the image resampling quality when resizing images. This is a clean re-implementation of community PR #25686 (by @thisisthekap), rebased onto `net11.0` and incorporating review feedback from @mattleibow.

### Key changes:
- **New `ResizeQuality` enum** with three values: `Auto` (default), `Best`, `Fastest`
- **Maps to `SKSamplingOptions`** (not the deprecated `Paint.FilterQuality` which is ignored by newer SkiaSharp)
- **MSBuild metadata**: `<MauiImage ResizeQuality="Fastest" ... />`
- **Zero behavior change for existing users** — `Auto` produces identical output to the previous hardcoded behavior
- **Metadata-aware incremental invalidation** — image, splash, app icon, and Android adaptive icon generation account for `ResizeQuality` metadata changes so stale outputs are not reused

### Quality mappings:
| ResizeQuality | SKSamplingOptions | Use case |
|---|---|---|
| `Auto` (default) | `Linear` + `Linear` mipmaps | Same as previous behavior; preferred default for general resizing |
| `Best` | `Mitchell` cubic resampler | Higher-fidelity cubic resampling when visual fidelity is critical |
| `Fastest` | `Nearest` neighbor, no mipmaps | Fast builds, pixel art |

### Usage:
```xml
<MauiImage Include="Resources\Images\photo.png" ResizeQuality="Fastest" />

Changes

Source changes across Resizetizer:

  • ResizeQuality.cs (new) — Custom enum
  • ResizeImageInfo.cs — Quality property + case-insensitive MSBuild metadata parsing
  • SkiaSharpTools.cs — ResizeQuality → SKSamplingOptions mapping; removed obsolete Paint.FilterQuality
  • SkiaSharpRasterTools.cs, SkiaSharpSvgTools.cs, SkiaSharpImaginaryTools.cs — Constructor chains
  • Resizer.cs, SkiaSharpAppIconTools.cs, AndroidAdaptiveIconGenerator.cs — Pass quality through
  • ResizetizeImages.cs, AndroidAdaptiveIconGenerator.cs — Include Resizetizer metadata-input freshness in app icon and Android adaptive icon regeneration
  • Microsoft.Maui.Resizetizer.After.targets — Include ResizeQuality in image and splash input tracking

Test coverage:

  • SamplingOptions correctness tests (all 3 qualities map correctly)
  • Functional pixel-comparison tests (different qualities produce different output)
  • Regression tests (default == explicit Auto, pixel-identical)
  • End-to-end MSBuild pipeline tests
  • App icon / Android adaptive icon / splash metadata invalidation coverage
  • Case-insensitive parsing tests

Review notes

Addresses feedback from @mattleibow on #25686:

  • ✅ Uses custom enum instead of exposing SkiaSharp's deprecated SKFilterQuality
  • ✅ Maps to SKSamplingOptions (the actual rendering control, not the ignored Paint.FilterQuality)
  • Best uses SKCubicResampler.Mitchell as suggested

Items for reviewer consideration:

  • Enum naming (Auto/Best/Fastest) — open to alternatives like Default/High/Low
  • TizenSplashUpdater has its own hardcoded quality (separate code path, out of scope)

Fixes #25686



</details>

---

<details>
<summary><strong>🏁 Report — Final Recommendation</strong></summary>
<br/>

## Comparative Report — PR #34559

### Ranking

| Rank | Candidate | Regression result | Assessment |
|---:|---|---|---|
| 1 | `pr-plus-reviewer` | ⚠️ Blocked/inconclusive | Best overall. It preserves the PR's feature implementation and applies the expert-review fixes for app icon, adaptive icon, and splash metadata invalidation. |
| 2 | `try-fix-3` | ⚠️ Blocked | Best STEP 5a standalone alternative. It reuses `_ResizetizerInputsFile` freshness and preserves most adaptive-icon skip behavior. |
| 3 | `pr` | ⚠️ Gate inconclusive | Core `ResizeQuality` implementation is good, but metadata-only changes can leave stale app icon/adaptive icon outputs and splash inputs are incomplete. |
| 4 | `try-fix-4` | ⚠️ Blocked | Correct-by-rendering and avoids unchanged timestamp churn, but adds rendering, temporary files, and byte-array I/O whenever the generator runs. |
| 5 | `try-fix-2` | ⚠️ Blocked | Simple and likely correct for adaptive icons, but removes all adaptive-icon inner skips and causes broader regeneration/timestamp churn than needed. |
| 6 | `try-fix-1` | ❌ Design rejected | Sidecar fingerprints were rejected before implementation because they introduce cleanup/resource-plumbing complexity. |

No candidate passed regression tests in this environment. `try-fix-1` is ranked lowest because it failed design review. The blocked/inconclusive candidates are ranked by correctness coverage, implementation risk, and build-system fit.

### Candidate comparison

**`pr`** adds the requested `ResizeQuality` enum, metadata parsing, quality propagation, SkiaSharp sampling mappings, target input tracking for `MauiImage`, and broad normal-image unit coverage. Its default `Auto` behavior appears compatible with existing output. The unresolved issues are incremental correctness: regular app icon and Android adaptive icon generation can skip after metadata-only quality changes, and splash input tracking does not include `ResizeQuality`.

**`pr-plus-reviewer`** keeps the PR and applies expert feedback. It uses `_ResizetizerInputsFile` freshness for app icon and adaptive icon skip decisions, extends splash input tracking to include `ResizeQuality`, and tightens enum parsing/docs. This gives the broadest correctness coverage while retaining the PR's implementation and avoiding sidecars or unconditional rendering.

**`try-fix-2`** removes the inner adaptive-icon timestamp skips. This is robust for adaptive-icon metadata changes but broader than necessary and can create avoidable regeneration/timestamp churn whenever the task runs.

**`try-fix-3`** compares adaptive icon destinations against the newer of the source timestamp and `_ResizetizerInputsFile`. This is the best STEP 5a alternative because it aligns with the PR's existing metadata invalidation mechanism without adding sidecar state or unconditional rendering, but it covers only the adaptive-icon portion of the final expert feedback.

**`try-fix-4`** renders to a temp PNG and byte-compares before replacing output. It is robust for adaptive-icon pixels but has the highest runtime/I/O cost and more implementation complexity.

**`try-fix-1`** was rejected before implementation because sidecar state under the intermediate image directory conflicts with cleanup/resource handling unless additional plumbing is added.

### Winner

`pr-plus-reviewer` wins. It retains the PR's correct `ResizeQuality` feature work and folds in the targeted expert-review fixes, resolving the main metadata invalidation gaps with less churn than `try-fix-2` and less overhead than `try-fix-4`.


</details>

</details>
<!-- SESSION:562562f END -->

---

<details>
<summary><strong>🧭 Next Steps</strong> — review latest findings</summary>
<br/>

No alternative fix was selected for this run. Review the session findings and CI results before merging.

</details>

@MauiBot MauiBot removed the s/agent-review-in-progress AI review is currently running for this PR label Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-single-project Splash Screen, Multi-Targeting, MauiFont, MauiImage, MauiAsset, Resizetizer s/agent-fix-pr-picked AI could not beat the PR fix - PR is the best among all candidates s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants