This page covers SDK requirements, build and publish commands, and the CI pipeline.
- .NET SDK 10.0.301 or newer — pinned in
global.json(rollForward: latestFeature), so a slightly newer 10.0.x SDK also works. - Any OS supported by .NET (the CI builds on Windows, Linux, and macOS).
- No native toolchain is required — this is a pure managed codebase.
git clone https://github.com/purelogiccode/XISOSharp.git
cd XISOSharp
# Restore + build everything (Debug)
dotnet build CSharp_XISOSharp.sln
# Release build
dotnet build CSharp_XISOSharp.sln -c Release
# Build just the CLI or the library
dotnet build XISOSharp.Cli -c Release
dotnet build XISOSharp.Core -c ReleaseThe solution contains:
| Project | Target(s) | Output |
|---|---|---|
XISOSharp.Core |
net8.0, net9.0, net10.0 | XISOSharp.dll + NuGet package |
XISOSharp.Cli |
net10.0 | extract-xiso executable |
XISOSharp.Tests |
net10.0 | xUnit test assembly |
XISOSharp.Benchmarks |
net10.0 | BenchmarkDotNet harness |
XISOSharpTester |
net10.0-windows | WPF regression-test GUI |
Note
The Core project packs a NuGet package on every build (GeneratePackageOnBuild),
so dotnet build also produces .nupkg / .snupkg files in
XISOSharp.Core/bin/<config>/.
dotnet test XISOSharp.Tests
dotnet test XISOSharp.Tests -c ReleaseThe suite is xUnit-based and runs sequentially (the engine changes the current
directory during create/extract, so tests are in a Sequential collection). With code
coverage:
dotnet test XISOSharp.Tests --collect:"XPlat Code Coverage"See Testing for the full picture, including cross-checking against the reference C tool.
The CLI can be published as a self-contained single-file executable — no .NET runtime required on the target machine:
# Windows x64
dotnet publish XISOSharp.Cli -c Release -r win-x64 --self-contained -p:PublishSingleFile=true
# Linux x64
dotnet publish XISOSharp.Cli -c Release -r linux-x64 --self-contained -p:PublishSingleFile=true
# macOS (Intel / Apple Silicon)
dotnet publish XISOSharp.Cli -c Release -r osx-x64 --self-contained -p:PublishSingleFile=true
dotnet publish XISOSharp.Cli -c Release -r osx-arm64 --self-contained -p:PublishSingleFile=trueSupported runtime identifiers (XISOSharp.Cli.csproj):
win-x64; linux-x64; osx-x64; osx-arm64.
Output lands in XISOSharp.Cli/bin/Release/net10.0/<rid>/publish/ as a single
extract-xiso (or extract-xiso.exe) binary.
The library package (XISOSharp) is configured in XISOSharp.Core.csproj:
| Setting | Value |
|---|---|
| Version | Derived from git tags via MinVer (v2.7.1 / 2.7.1) |
| Symbols | snupkg with SourceLink (EmbedAllSources, EmbedUntrackedSources) |
| Reproducibility | Deterministic + ContinuousIntegrationBuild on CI |
| Signing | Strong-named (XISOSharp.snk) |
| Trimming/AOT | IsTrimmable, IsAotCompatible |
| API validation | EnablePackageValidation + strict mode |
| Metadata | MIT license, README, icon, tags (xiso, xbox, extract-xiso, …) |
Pack manually:
dotnet pack XISOSharp.Core -c Release -o ./artifacts.github/workflows/ci.yml runs on every push/PR to main and on v* tags:
- build-and-test — matrix over
ubuntu-latest,windows-latest,macos-latest: restore → build (Release) → test with XPlat code coverage; the coverage report is uploaded as an artifact. - pack (after tests) —
dotnet packthe core project and upload the nupkgs. - publish (only on
v*tags, environmentnuget) — push the nupkgs to nuget.org using theNUGET_API_KEYsecret.
The CI also runs the test suite's cross-checks against the bundled reference data, so a green pipeline implies byte-compatibility with the reference C tool for all covered scenarios.
See also: Testing · Contributing · Troubleshooting