Building from Source

Getting Started Using the App Technical Reference Project
Home Usage Guide Architecture Repository
Installation Conversion Methods XDVDFS Technical Docs Building from Source
  XISO Explorer Troubleshooting & FAQ Release Notes

Prerequisites

Requirement Notes
Windows 10/11, Linux, or macOS (x64 or ARM64) Avalonia application; builds and runs on all three platforms
.NET 10 SDK Matches the net10.0 target; global.json pins the required SDK version
Git To clone the repository

Verify your SDK:

dotnet --version

Cloning

git clone https://github.com/purelogiccode/XISOStudio.git
cd XISOStudio

Building

Build the full solution (application + test project):

dotnet build CSharp_XISOStudio.sln

Or build and run the application directly:

dotnet run --project XISOStudio

Bundled Helper Tools

XISO conversion is performed by the XISOSharp NuGet package and CHD encoding by the CHDSharp NuGet package — no conversion binaries are bundled. The application project bundles the official 7-Zip console binaries, copied to the output directory for the matching platform/architecture:

  • 7za.exe, 7za_arm64.exe — 7-Zip CLI fallback for Windows (x64/ARM64)
  • 7zz_linux_x64, 7zz_linux_arm64 — 7-Zip CLI fallback for Linux (static build)
  • 7zz_osx — 7-Zip CLI fallback for macOS (universal arm64/x86-64)

These are committed to the repository, so no extra download steps are needed. A system 7z on PATH (for example sudo apt install 7zip or brew install sevenzip) is used as a further fallback; SharpCompress handles .zip/.rar/most .7z archives without any of them. The bundled binaries are distributed under the 7-Zip license (7-Zip-License.txt).

Running the Tests

The test suite uses xUnit with Moq:

dotnet test CSharp_XISOStudio.sln

The suite covers models, services (orchestrator, XISO conversion, integrity, extractor, movers, path helpers, update checker, and more).

Code Analysis

Both projects enforce analyzer rules (Meziantou.Analyzer, Roslynator) as build warnings. Treat new warnings in changed code as errors in practice — keep the build clean.

Publishing a Release Build

Example for a framework-dependent x64 publish (single file, with the native Avalonia/Skia libraries embedded and extracted to a temporary folder on first run):

dotnet publish XISOStudio -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true

For a self-contained build (no .NET runtime requirement for end users):

dotnet publish XISOStudio -c Release -r win-x64 --self-contained true

Supported runtime identifiers:

Platform RIDs
Windows win-x64, win-arm64
Linux linux-x64, linux-arm64
macOS osx-x64, osx-arm64

All RIDs can be cross-published from any OS (the native Avalonia/Skia assets come from NuGet). After extracting a Linux/macOS build, mark the executable runnable with chmod +x XISOStudio.

Project Notes

  • Target framework: net10.0 with Avalonia (Avalonia, Avalonia.Desktop, Avalonia.Themes.Fluent, Avalonia.Controls.DataGrid).
  • Nullable + implicit usings are enabled.
  • The References/ folder (vendored sources such as the xdvdfs Rust workspace, if present) is excluded from compilation.
  • Version numbers are maintained in XISOStudio.csproj (AssemblyVersion / FileVersion); the update checker compares against GitHub release tags.
  • Windows-only features degrade gracefully on Linux/macOS: the disk read/write speed monitor shows N/A, and the 7-Zip CLI fallback ships bundled for every platform (with a system 7z as a further fallback).