Deployment Notes¶
Summary¶
This document tracks deployment and release-time considerations that are currently known for BgRaster.
Tomlyn IL2104 Under NativeAOT + Trimming¶
Symptom¶
Release publish with NativeAOT and full trimming can fail when warnings are treated as errors:
dotnet publish ... /p:PublishAot=true /p:TreatWarningsAsErrors=true- Warning promoted to error:
IL2104for Tomlyn.
What it means¶
IL2104 is an aggregate trimmer warning emitted for an assembly (Tomlyn). The detailed warnings indicate reflection-based APIs that are not fully annotated for trimming.
Impact assessment¶
In this project, Tomlyn is used through Toml.ToModel(...) and manual TomlTable extraction, not direct POCO model deserialization. That lowers risk, but does not eliminate it.
Mitigation now in place¶
src/BgRaster.csproj sets:
<WarningsNotAsErrors>$(WarningsNotAsErrors);IL2104</WarningsNotAsErrors>for non-Debug configurations.
This keeps strict warnings-as-errors behavior for other warnings while preventing this known third-party trim warning from blocking release publish.
Validation strategy¶
Use published-binary smoke validation in CI and locally:
- Script:
scripts/run-publish-smoke-test.ps1 - CI step:
Smoke test published binary
Smoke test coverage includes:
- Executable startup (
--help) - Real render path with a temporary config
no-discovery+no-assignmentpath- Verification that expected output file is produced
Release contents¶
Every official release reaches users through three channels, and every one of them carries the Open Source Maintenance Fee EULA, OSMFEULA.txt:
BgRaster.zipon GitHub Releases containsBgRaster.exe,libSkiaSharp.dll,LICENSE.txt(MPL-2.0),OSMFEULA.txtand a shortREADME.txt, all at the root. The release job in.github/workflows/ci.ymlstages them.README.txtcomes frombuild/release/, andLICENSE.txtis the copy inbuild/chocolatey/BgRaster/.BgRaster.pdbis attached to the release separately.- The Chocolatey package
BgRastercarries the same binaries,LICENSE.txt,VERIFICATION.txtandOSMFEULA.txtin itsbinariesfolder.chocolateyinstall.ps1copies them intotools\, next toBgRaster.exe, and then prints the maintenance-fee message. - The winget package
GameshowPro.BgRasterinstalls that same zip. Its locale manifest carries the maintenance-fee message asInstallationNotes, which winget shows after installing. It deliberately has noAgreements: those would force--accept-package-agreementson every install, and the fee works on the honor system.
Because every published release carries the EULA, publishing a release is what makes the fee apply to that version. Do not publish one without OSMFEULA.txt. Builds compiled from source are not official builds, and the EULA does not apply to them. See Maintenance fee.
Every release also carries build provenance attestations for BgRaster.zip, the .nupkg, BgRaster.pdb, and the extracted BgRaster.exe and libSkiaSharp.dll. Each is a signed statement, held by GitHub, that the file was built by the CI workflow from a specific commit. Check any of them, including a file installed by Chocolatey or winget, with:
gh attestation verify BgRaster.exe --repo gameshowpro/BgRaster