Repository navigation
fix(cli): package games with .NET SDK 11 (runtime pack MSBuild resolved, workloads per SDK) - #153
Merged
Merged
Conversation
…'s own With .NET SDK 11 installed, a net10.0 game is published with a 10.0 runtime pack, but `microengine package` looked for the licence of the SDK's bundled runtime (11.0.0) and stopped. Every target now asks MSBuild for the ResolvedRuntimePack of the publish and copies that pack's licence and notices; build-info.json records its version. The Android host gets them through a generated Runtime.props after a restore. `microengine doctor` accepts any SDK from 10 on and names the browser workload the SDK in use needs for a .NET 10 game (wasm-tools-net10 with SDK 11); `microengine info` shows the target framework. The SDK's external check now installs .NET SDK 11 explicitly and installs the workloads for that SDK from outside the repository, so the project and its workloads share one SDK; it records the SDK in use and checks the runtime each package carries.
…d repair The external check expects a failed web package only when no browser runtime pack is on disk, since a newer SDK accepts another SDK's matching pack as its workload. The embedding page names wasm-tools-net10 for SDK 11.
Firefox 160 (ubuntu-24.04 runner image 20261103.629) fails the check
"fullscreen button and Alt+Enter" with {"on":false,"w":960}. Reproduced
in a container with Firefox 159.0 and 160.0 from ftp.mozilla.org under
xvfb-run and puppeteer-core 25.13.0 (WebDriver BiDi): the button's click
carries user activation (navigator.userActivation.isActive is true) and
calls requestFullscreen(), but on Firefox 160 on a bare Xvfb the promise
never settles and neither fullscreenchange nor fullscreenerror fires,
even after 6 s. Firefox 159 completes the same request on the same
display. With a window manager (Openbox) running on the display, both
versions enter fullscreen; headless Firefox 160 does too. So Firefox 160
on X11 waits for the window manager to make the window fullscreen, and
xvfb-run starts none. The page's fullscreen button is correct: a real
desktop always has a window manager.
The browser engine job installs openbox and the Firefox step starts it
inside xvfb-run before the suites. Chrome's steps are unchanged.
|
Preview of 3ba872a (candidates demos): https://micro-engine-77z14atdw-nastmzs-projects.vercel.app |
This was referenced Nov 13, 2026
This branch was successfully deployed
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.
What and why
GitHub's ubuntu-24.04 image now ships .NET SDK 11.0.100. The SDK's external-project check (
sdk/tests/external.mjs) builds outsideglobal.json, so SDK 11 builds thenet10.0game, and four checks failed (run 43279201768, "SDK / External project (Linux)"). This fails onmaintoo.microengine packagelooked for the wrong runtime pack. It used the SDK's bundled runtime version (BundledNETCoreAppPackageVersion, 11.0.0), but anet10.0publish under SDK 11 uses the 10.0.x pack, so.../microsoft.netcore.app.runtime.linux-x64/11.0.0/LICENSE.TXT is missing. Every target (desktop, web, Android, iOS) now asks MSBuild which pack the build used (-t:ResolveFrameworkReferences -getItem:ResolvedRuntimePackon the restored project) and copies that pack's licence and notices.build-info.jsonrecords that version. The Android host gets the files through a generatedRuntime.props, written after a restore.global.jsonselects SDK 10, while the external project built with SDK 11. Workloads belong to one SDK. The web build only "succeeded" because SDK 10's packs on disk satisfied SDK 11.11.0.xexplicitly, so runners don't depend on image rollout timing. The Linux job installswasm-tools-net10 androidfrom$RUNNER_TEMP. SDK 11 needswasm-tools-net10for net10.0 browser builds;wasm-toolsserves net11.0 only (seen in SDK 11's manifests and a local NETSDK1147). SDK 10 stays covered by the repository's own package checks.doctoraccepts any SDK from 10 on, anddoctor webnames the workload that SDK needs.infoshows the target framework (net10.0) instead of the SDK's runtime.## Next release, Fixed) anddocs/releasing.md.How it was checked
dotnet test MicroEngine.slnx -c Releasepasses. Onlytests/MicroEngine.Cli.Testswas run (26 passed, 1 skipped); the full solution was left to CI.external.mjsnow checks each package's runtime against the game's framework and whatdoctor webreports, and logs the SDK it used.sdk/tests/external.mjson Windows with .NET SDK 11.0.100, against a locally packed feed: all checks passed. The Windows and Linux packages carry runtime 10.0.15, and the web expected failure nameswasm-tools-net10. Not run locally: Linux web and Android under SDK 11; this PR's CI is the first run of those.Risk: CI and packaging change (the external job's SDK and workloads, and how every package finds the .NET licence files).
Licence
(CONTRIBUTING.md)
CREDITS.md🤖 Generated with Claude Code