Skip to content

Microsoft.DotNet.ApiCompat reports a false CannotChangeAttribute compat issue #11090

Open
@BruceHaley

Description

@BruceHaley
  • This issue is blocking
  • This issue is causing unreasonable pain

In our ADO pipeline, Microsoft.DotNet.ApiCompat falsely reports this compat issue with our PowerFx.Core library:

Compat issues with assembly Microsoft.PowerFx.Core:
CannotChangeAttribute : Attribute 'Microsoft.AppMagic.Transport.TransportTypeAttribute' on 'Microsoft.PowerFx.Syntax.Span' changed from '[TransportTypeAttribute(0, true, null, null, false)]' in the contract to '[TransportTypeAttribute(TransportKind.ByValue, true, null, null, false)]' in the implementation.
Total Issues: 1

I reduced the problem to these Repro steps:

  1. Download version 0.2.2-preview of the below 4 packages from nuget.org. Or you can download the .dlls themselves using this link.

  2. Put these 4 .dlls from the 4 packages in folder C:\PowerFx\323592-ContractDlls-v0.2.2-preview:

  • Microsoft.PowerFx.Core.dll
  • Microsoft.PowerFx.Interpreter.dll
  • Microsoft.PowerFx.LanguageServerProtocol.dll
  • Microsoft.PowerFx.Transport.Attributes.dll
  1. From the folder C:\PowerFx, execute the following ApiCompat command:
C:\src\ThirdParty\arcade\artifacts\bin\Microsoft.DotNet.ApiCompat\Debug\netcoreapp3.1\Microsoft.DotNet.ApiCompat.exe 323592-ContractDlls-v0.2.2-preview\Microsoft.PowerFx.Core.dll --impl-dirs 323592-ContractDlls-v0.2.2-preview

The above compares Microsoft.PowerFx.Core.dll against itself. One would expect "Total Issues: 0" to be reported. Instead, it reports the above issue.

The source for the PowerFx packages is here: https://github.com/microsoft/Power-Fx

Is it possible I am executing the ApiCompat command incorrectly? Executing it against the other 3 libraries gets the expected "Total Issues: 0" result.

Thank you.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions