Produce AOT, Runtime Specific, Cross Build Executables of dotnetup#53143
Produce AOT, Runtime Specific, Cross Build Executables of dotnetup#53143nagilson merged 32 commits intodotnet:release/dnupfrom
dotnetup#53143Conversation
it seems this is arm64? https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=macos-images%2Cyaml#software This might not actually work and get rejected. Apparently its the only arm64 image they've got. If this doesn't work we should probably switch to having a windows arm leg.
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
also migrates some code using the formatter to fix some issues
…on/sdk into nagilson-dnup-executables
|
Seems good, just need to get the linux executables working because the cross build container is out of disk space |
|
The first time I tried to run the standalone exe it hung - then it failed due to a 'corrupt' manifest ( different manifest versions on my dev machine) - should probably audit. This also makes me want to change the walkthrough. xml is also being produced standalone. |
I couldnt find a way to exclude this file and we don't care about this file - it shouldn't be migrated into main though
do not merge with sdk repo
we dont need them
There was a problem hiding this comment.
Pull request overview
This PR updates the dotnetup build/test/dev workflow to prefer NativeAOT-published binaries where available, and expands CI to publish AOT executables across multiple RIDs while separating “style-check” from bootstrap builds.
Changes:
- Update dotnetup test utilities to locate and run an AOT-published dotnetup binary (with managed fallback).
- Add CI stages/templates to publish dotnetup executables for multiple RIDs and add a dedicated style-check stage.
- Adjust installer/dotnetup interop and build properties (mutex robustness, P/Invoke attributes, analyzer enforcement, test runtime install gating).
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| test/dotnetup.Tests/Utilities/DotnetupTestUtilities.cs | Search for AOT publish output first (then managed output) when locating dotnetup. |
| test/dotnetup.Tests/DnupE2Etest.cs | Clarify DOTNET_ROOT behavior when running managed vs AOT dotnetup. |
| src/Installer/Microsoft.Dotnet.Installation/Microsoft.Dotnet.Installation.csproj | Suppress SYSLIB1054 and relax style/code-analysis enforcement during bootstrap builds. |
| src/Installer/Microsoft.Dotnet.Installation/Internal/ScopedMutex.cs | Increase mutex timeout and handle AbandonedMutexException as success. |
| src/Installer/Microsoft.Dotnet.Installation/Internal/HostFxrWrapper.cs | Add unmanaged calling convention annotation for LoadLibraryExW. |
| src/Installer/installer.code-workspace | VS Code workflow improvements (target framework input; publish-aot preLaunchTask). |
| src/Installer/dotnetup/WindowsPathHelper.cs | Adjust LibraryImport signature/marshalling for SendMessageTimeout. |
| src/Installer/dotnetup/Telemetry/TelemetryCommonProperties.cs | Refactor dev-build detection to share env-var logic between configs. |
| src/Installer/dotnetup/dotnetup.csproj | Disable code-style enforcement and CA warnings-as-errors during bootstrap builds. |
| src/Installer/dotnetup/.vscode/launch.json | Add target framework input to avoid hardcoding net10.0 in debug path. |
| eng/restore-toolset.sh | Allow skipping shared framework installs via DOTNET_INSTALL_TEST_RUNTIMES=false. |
| eng/restore-toolset.ps1 | Allow skipping shared framework installs via DOTNET_INSTALL_TEST_RUNTIMES=false. |
| eng/pipelines/templates/jobs/dotnetup/dotnetup-tests.yml | Publish dotnetup AOT before running tests; add disk cleanup step on Unix. |
| eng/pipelines/templates/jobs/dotnetup/dotnetup-library-package.yml | Disable code-style enforcement for the library package build leg. |
| eng/pipelines/templates/jobs/dotnetup/dotnetup-executables.yml | New template to publish per-RID AOT executables and publish artifacts/binlogs. |
| documentation/manpages/tool/run_docker.sh | Change docker build to use an explicit Dockerfile path. |
| documentation/manpages/tool/Dockerfile | Remove the previous manpage-tool Dockerfile. |
| .vsts-dnup-pr.yml | Narrow restore scope; enforce CA warnings-as-errors in the warn-as-error leg; add executable build stage. |
| .vsts-dnup-ci.yml | Add style-check stage and per-RID executable publish stages; define cross-build containers. |
You can also share your feedback on Copilot code review. Take the survey.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…on/sdk into nagilson-dnup-executables
also add a timeout to bootstrap toolset at the beginning so it fails if its been more than 10 min - running out of disk space seems to make it take 1.5 hr to fail
dotnetupdotnetup
this seems to happen a lot if other tasks can run simultaneously on that image ?
dsplaisted
left a comment
There was a problem hiding this comment.
I don't follow all of the AzDO pipelines yaml, but looks good.
For:
#52350
#51585
Also resolves #53073 by making tests use the native aot version of dotnetup.
https://dev.azure.com/dnceng/internal/_build?definitionId=1544&_a=summary
Changes include:
Does not include: