Important
This is the home of the Kontent.ai .NET SDKs. All five products have moved here with their full history, and packages are published from this repository.
The former per-product repositories are frozen — they are kept for reference and for the release history of versions published before the move. Open issues and pull requests here instead:
| Former repository | Now at |
|---|---|
| delivery-sdk-net | src/delivery |
| management-sdk-net | src/management |
| sync-sdk-net | src/sync |
| aspnetcore-extensions | src/aspnetcore |
| model-generator-net | src/model-generator |
Package IDs and public APIs are unchanged by the move.
A monorepo for the Kontent.ai .NET SDKs and tooling — one place for the client libraries, the model generator, integrations and samples, so that a change touching several of them is one pull request rather than a coordinated release across five repositories.
src/<product>/ each product, with its own CHANGELOG.md and package metadata
eng/ version source of truth, release routing, build scripts
.github/workflows/ CI and the tag-routed release pipeline
Currently migrated:
| Product | Path | Packages |
|---|---|---|
| ASP.NET Core extensions | src/aspnetcore |
Kontent.Ai.AspNetCore |
| Delivery SDK | src/delivery |
Kontent.Ai.Delivery, Kontent.Ai.Delivery.Abstractions, Kontent.Ai.Delivery.Caching, Kontent.Ai.Delivery.SourceGeneration, Kontent.Ai.Urls |
| Management SDK | src/management |
Kontent.Ai.Management |
| Model generator | src/model-generator |
Kontent.Ai.ModelGenerator, Kontent.Ai.ModelGenerator.Core |
| Sync SDK | src/sync |
Kontent.Ai.Sync, Kontent.Ai.Sync.Abstractions |
Requires the .NET SDK pinned in global.json.
dotnet build # everything
dotnet test # everything, with per-product coverage gatesEach product also has its own solution under src/<product>/ if you only want to open one.
Versions live in eng/Versions.props, one property per product.
A release is a version bump plus a changelog entry, then a tag.
Actions → Prepare release is the normal route. Each product has its own dropdown
defaulting to none, so one run can bump several products at once and opens a single PR
covering the batch.
After merging that PR, Actions → Publish batch creates a GitHub Release for every product whose declared version is not yet on NuGet — in dependency order, waiting for each to publish before starting the next. Release notes come from each product's changelog. It defaults to a dry run, so you can see the plan and the notes before anything is created.
Nothing about that is required: a release is just a GitHub Release tagged
<product>-v<version>, so creating them by hand works exactly the same. Releases stay
independent either way — any one can be published or dropped without affecting the rest.
The same bump can be done locally if you prefer:
dotnet run eng/scripts/update-version.cs -- <product> <prerelease|release|patch|minor|major>
# review, commit, merge, then tag <product>-v<version>Publishing is routed by the tag: aspnetcore-v0.17.0 packs and publishes only the
ASP.NET Core product. The pipeline refuses to publish if the tag disagrees with
eng/Versions.props, if the changelog has no entry for that version, or if a package
would depend on a Kontent.Ai.* version that is not yet on NuGet. Packages belonging to
the same product are exempt from that last check — they are published together.
Preparing and publishing are separate steps, so a batch can bump several products and then only some get released. To see where each product stands:
dotnet run eng/scripts/release-status.csA PREPARED, NOT PUBLISHED product is a normal intermediate state, not a problem. Resolve
it whichever way matches your intent:
- Releasing it later — do nothing. The version property and changelog entry are already
valid; tag
<product>-v<version>whenever you are ready. - Abandoning it — undo the preparation: restore the version in
eng/Versions.props, and delete the## <version> (<date>)heading so its notes sit under## Unreleasedagain.
The one thing to avoid is preparing the same product again while it is in this state — the bump would move on from a version that was never published, silently skipping it.
See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
Distributed under the MIT License. See LICENSE.md for more information.