Repository navigation
Package managed ilasm using SDK NuGet infrastructure - #136547
Merged
jkoritzinsky merged 12 commits intoOct 30, 2026
Merged
jkoritzinsky merged 12 commits into
jkoritzinsky merged 12 commits into
Conversation
Publish RID payloads from managed ilasm and use a separate host single-file project for cross-component packages. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retain the pkgproj lineup while moving RID payload and symbol packaging to the publishing projects; integrate the tools subset and CI. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Share the existing official RID definitions, generate the same runtime.json, and preserve identity-leg and host-tool selection without pkgproj packaging. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: Successfully started running 6 pipeline(s). 10 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
|
Tagging subscribers to this area: @JulieLeeMSFT, @dotnet/jit-contrib |
jkoritzinsky
marked this pull request as draft
October 27, 2026 21:48
Select ilasm projects directly through tools.ilasm, implied by clr.tools, and generate the lineup runtime graph without the legacy packaging package. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This was referenced Oct 28, 2026
Member
|
Tested on openbsd and found some gaps (even in main), fixed in #136571. |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved regressions cause duplicate or missing ILAsm packages across build configurations and break resource-enabled builds with the replacement managed tool.
4 open issues
What changed in this PR
This PR moves ILAsm NuGet packaging from legacy pkgproj infrastructure to SDK projects, using managed ilasm while retaining the existing package IDs and native asset paths.
Changes:
- Adds shared SDK packaging settings and a separate host-tool publish project.
- Replaces the legacy lineup package with a NoTargets project and runtime-graph generation task.
- Integrates package production into build subsets and ILAsm CI.
| File | Description |
|---|---|
src/tools/ilasm/src/ilasm/ilasm.props |
Shares tool settings and packages published binaries and symbols. |
src/tools/ilasm/src/ilasm/ilasm.csproj |
Imports shared packaging settings. |
src/tools/ilasm/src/ilasm/ilasm_inbuild.csproj |
Adds single-file host-tool publishing. |
src/tasks/installer.tasks/installer.tasks.csproj |
References NuGet.Versioning for runtime-graph generation. |
src/tasks/installer.tasks/GenerateILAsmRuntimeGraph.cs |
Generates RID-specific package dependency mappings. |
src/coreclr/.nuget/pkgproj.props |
Imports the extracted shared RID definitions. |
src/coreclr/.nuget/package-rids.props |
Centralizes official and custom package RIDs. |
src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.proj |
Removes the legacy packaging traversal. |
src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj |
Removes native ILAsm pkgproj packaging. |
src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.Package.csproj |
Adds SDK-based lineup packaging. |
src/coreclr/.nuget/coreclr-packages.proj |
Removes the legacy ILAsm project reference. |
eng/Subsets.props |
Selects managed ILAsm and packaging projects. |
eng/pipelines/coreclr/ilasm.yml |
Adds packaging triggers and enables CI packing. |
Review effort: Balanced
jkotas
reviewed
Oct 28, 2026
am11
reviewed
Oct 28, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
jkotas
reviewed
Oct 28, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Extract reusable NativeAOT tool packaging targets and simplify package metadata. Add package readmes, remove redundant task-host and platform settings, and rename the runtime dependency task source file. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
jkotas
reviewed
Oct 29, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
jkotas
reviewed
Oct 29, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
jkotas
approved these changes
Oct 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.

Switch the existing ILAsm NuGet packages to managed ilasm, then migrate their
pack ownership to the SDK without changing the consumer package IDs or native
asset paths.
Ordered phase checkpoints
eb5ed0ea244: retain pkgproj packaging and replace its payload with publishedmanaged ilasm. Add
ilasm_inbuild.csprojfor host packages, following thecrossgen2 inbuild single-file/R2R pattern.
5a183c36758: move RID-specific SDK packaging into the ilasm projects,including published symbols. Retain the pkgproj lineup at this checkpoint.
Include package production in the tools.ilasm subset and existing CI.
e72d13142f7: replace the lineup pkgproj with an SDK NoTargets packageproject, reusing the shared official RID definitions and runtime.json
generation. Preserve identity-package leg selection and additional host
packages.
Package-layout comparison
Retained and compared actual phase-1 pkgproj archives against phases 2 and 3:
18 archives per phase across win-x64, win-x86, win-arm64, and an ARM64 target
build producing a separate win-x64 host package. Payload/resource entry paths,
symbol paths, Windows ZIP attributes, package identity/contract metadata and PE
architectures match. The final lineup's runtime.json is byte-identical to phase
1, including all 19 default RID mappings and dependency ranges. No new framework,
ILAssembler, System.CommandLine, or build-task dependencies are exposed.
Accounted differences: generated core-property UUIDs/relationship IDs and NuGet
generator version; real SDK repository revision/branch metadata; omission of
obsolete nuspec owners and explicit false license-acceptance metadata. Rebuilt
executable/PDB bytes differ; this is a layout/contract comparison, not a claim of
bit-identical codegen. SDK symbol archives are emitted beside regular packages
instead of the legacy symbols output subdirectory.
Validation
.\dotnet.cmd msbuild src\tools\ilasm\src\ilasm\ilasm.csproj -restore -t:Publish -p:Configuration=Release -p:NuGetAudit=false— passed..\.dotnet\dotnet.exe msbuild src\coreclr\.nuget\Microsoft.NETCore.ILAsm\Microsoft.NETCore.ILAsm.proj -restore -t:Pack -p:Configuration=Release -p:NuGetAudit=false -p:TargetArchitecture=<x64|x86|arm64> -p:PackageOutputPath=<phase-specific-directory>— passed, with matching per-target restores before phase-1 packaging.-p:TargetArchitecture=arm64 -p:BuildHostILTools=true— passed in all phases..\build.cmd tools.ilasm -c Release -test /p:NuGetAudit=false— passed after phases 2 and 3; 5,578 tests total, 5,575 passed, 3 existing skips, no failures/errors.--helpand assembly of a minimal IL DLL — passed..\.dotnet\dotnet.exe restore <Consumer.csproj> --configfile <local-feed-config> -p:RuntimeIdentifier=<win-x64|win-x86|win-arm64>— passed; each selects exactly its RID package through the lineup.git diff --check— passed.Validation is Windows-only, as requested. ARM64 was cross-built, not executed.
Linux/macOS/community-platform production, Unix executable modes, bootstrap
source-build packs and official signing/release legs are unverified. All legacy
advertised RIDs remain; availability of compatible packs/toolchains for every
legacy platform is not established by this PR's local validation. Publish/restore
failures are not hidden by native fallbacks or synthetic payloads.
Note
This pull request was generated with GitHub Copilot.