Fix AppHost SDK version compatibility check to accept preview versions #12238
+202
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The AppHostHelper was using
SemVersion.ComparePrecedenceTo()to validate Aspire.Hosting package versions, which follows SemVer 2.0.0 precedence rules. According to these rules, prerelease versions have lower precedence than release versions when their major.minor.patch components are equal. This caused preview versions to be incorrectly rejected:The issue manifests when the minimum version matches the major.minor.patch of a preview version being used. While the current code works with minimum version
9.2.0, it would break when updated to match current release versions (e.g.,13.0.0).Solution
Replaced
ComparePrecedenceTo()with a customCompareMajorMinorPatch()method that compares only the major, minor, and patch components while ignoring prerelease identifiers and build metadata. This ensures preview versions are accepted as long as their semantic version number (major.minor.patch) meets or exceeds the minimum requirement.Before:
After:
Testing
Added comprehensive test suite with 21 test cases covering:
All tests pass:
Impact
Fixes #[issue-number]
Original prompt
Fixes #12229
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.