Skip to content

Generate reference assembly of Microsoft.Extensions.Logging.Abstraction,2.2.1 with the Roslyn-based GenAPI #11787

@andriipatsula

Description

@andriipatsula

Context

Base issue: #11225
Reference package path: microsoft.extensions.logging.abstraction
Roslyn-based GenAPI location: https://github.com/dotnet/sdk/tree/main/src/GenAPI/

Usage:

/repos/source-build-reference-packages]# ./generate.sh --pkg microsoft.extensions.logging,2.1.1 --genapi-backend roslyn --dest /repos/source-build-reference-packages/src/referencePackages/roslyn/

Steps:

  1. Generate SBRP package using SBRP generator with the roslyn-based backend
  2. Compare cci-based <-> roslyn-based reference assemblies
  3. Build the SBRP generated with the roslyn-based backend
  4. Collect issues, their occurrence, create bugs for each.
  5. Run the sdk/ApiCompat tool to compare generated API with original

How to compile project in SBRP

Use a docker or a VM and from root folder of source-build-reference-packages run:

/repos/source-build-reference-packages]# ./build.sh --projects ./build.sh --projects /repos/source-build-reference-packages/src/referencePackages/roslyn/system.memory/4.5.1/System.Memory.4.5.1.csproj

How to use the ApiCompat tool

sdk\artifacts\bin\Microsoft.DotNet.ApiCompat.Tool\Debug\net6.0> .\Microsoft.DotNet.ApiCompat.Tool.exe --strict-mode true --enable-rule-attributes-must-match true --enable-rule-cannot-change-parameter-name true --lref ... --rref ... -l ... -r ...

Found Issues:

Microsoft.Extensions.Logging: Occurrence: 31

Occurrence: 1

Occurrence: 4+

ApiCompat output:

  • CP0009: Type 'T' is sealed because it has no visible constructor

Occurrence: 3
both cci & roslyn based produces the same type definitions, but cci-based add internal default constuctor
Either generate default internal constructor or mark as sealed.
Ref package is compliable without these changes.

Metadata

Metadata

Assignees

Labels

area-product-constructionIssues owned by the Product Construction team. Used to label epics and untriaged, loose issues.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions