dotnet / dotnet/sdk

APICompat doesn't compare compatible frameworks when package drops a framework.

Open
#54,057 1 comment 0 reactions 0 assignees View on GitHub
Area-ApiCompat untriaged
Dominant language
C#
Stars
3.2k
Forks
1.3k
PR merge metrics
PR metrics pending

Description

### Describe the bug
When comparing the latest package to a baseline package, there may not be a 1/1 framework match. APICompat should be determining all interesting frameworks and creating comparison tuples for those, but it's missing some for some reason.

Consider the comparison of Microsoft.Extensions.Configuration.Abstractions 1.1.0 to 2.0.0. Across these versions they went from netstandard1.0 to netstandard2.0.

APICompat should consider both netstandard1.0 and netstandard2.0 for tuples.

For netstandard1.0 - the new package doesn't support it - apicompat emits a PKV006 and skips that.
For netstandard2.0 - it should resolve the netstandard2.0 asset from the 2.0.0 package and the netstandard1.0 asset from the 1.1.0 package and compare them but it does not. As a result it does not report a compatibility problem.

(omitting other frameworks from this example, but hopefully this should illustrate the issue)

### To Reproduce
`apicompat package C:\scratch\extensionsCompat\packages\Microsoft.Extensions.Configuration.Abstractions\3.1.32\Microsoft.Extensions.Configuration.Abstractions.3.1.32.nupkg --baseline-package C:\scratch\extensionsCompat\packages\Microsoft.Extensions.Configuration.Abstractions\1.1.2\Microsoft.Extensions.Configuration.Abstractions.1.1.2.nupkg`

Expect -- an error about changing the return type on IConfigurationBuilder.Properties (and other errors)

Actual - only PKV006 errors

### Exceptions (if any)

### Further technical details
apicompat --version
10.0.203+c23858a6d860abe3ca94f9ac630c3e61b2625664
dotnet --version
11.0.100-preview.4.26208.110

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.