Skip to content

Generate reference assembly of microsoft.build, with Roslyn-based GenAPI #11350

@andriipatsula

Description

@andriipatsula

Context

Base issue: #11225
Reference package path: microsoft.build
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.Build:

Occurrence: 1

System.Collections.Immutable:

Occurrence: 83

Occurrence: 9

Occurrence: 10

Microsoft.Win32.SystemEvents:

Occurrence: 7

System.Globalization, 4.3.0:

Occurrence: 1

System.Runtime:

Occurrence: 4

Occurrence: 31

Occurrence: 41

Occurrence: 10

Occurrence: 5

Occurrence: 26

Occurrence: 42

Occurrence: 2

System.Threading

Occurrence: 2

Occurrence: 2

Occurrence: 1

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