Thanks for contributing.
- macOS with Xcode 26.3 installed (required by the pinned .NET iOS workload)
- .NET SDK 10 (this repo pins the
10.0.202feature band viaglobal.json)
Build the native wrapper, managed package, sample, and NuGet:
dotnet workload install ios --version 10.0.202
bash src/Kapusch.StoreKit2ApisForiOSComponents/Native/iOS/build.sh
dotnet build src/Kapusch.StoreKit2ApisForiOSComponents/Kapusch.StoreKit2ApisForiOSComponents.csproj -c Release
dotnet build samples/Kapusch.StoreKit2.iOS.Sample/Kapusch.StoreKit2.iOS.Sample.csproj -c Release
dotnet pack src/Kapusch.StoreKit2ApisForiOSComponents/Kapusch.StoreKit2ApisForiOSComponents.csproj -c Release -o artifacts/nuget
python3 scripts/validate-nupkg.py artifacts/nuget/Kapusch.StoreKit2.iOS.0.1.0.nupkgThe native build is required even for managed-only package changes because the .nupkg must contain
the complete xcframework.
masteris the only long-lived development and release branch.- Create a short-lived feature branch and open a pull request to
master. - Do not implement work directly on
release/*, create new release branches, rebase published history, force-push shared branches, or move an existing tag. - Keep pull requests focused, update documentation when behavior changes, and merge only after CI passes.
- Release candidates use
vX.Y.Z-rc.N; stable releases usevX.Y.Z. - Every release tag target must be reachable from
origin/master. - A manual workflow run without a version publishes a unique preview to GitHub Packages.
- A manual NuGet.org version publish must be dispatched from
master; the workflow rejects versions already present in the official NuGet index. - Historical packaging requires the explicit
source_refinput, which must resolve to a commit reachable fromorigin/master.
The complete deterministic procedure is in Docs/Release.md.
- C#: follow
.editorconfig. - Swift/Shell: keep style minimal and consistent.
By contributing, you agree that your contributions are licensed under the repository license (MIT).