What a site actually references
A site restores the libraries, not the template. Cendia.Templates is a dotnet new shim and
is in no site's dependency graph — it delivers the starting files and then plays no further part.
A site names one package, Cendia.CMS. It is all of Cendia, and it brings the rest with it:
| Package | What it is |
|---|---|
Cendia.CMS |
The one a site installs: hosting (AddCendia / MapCendia), delivery, preview, rendering, and the generator that reads your content types at build time |
Cendia.Core |
The model: content types, fields, scheduling, audiences, security |
Cendia.Data |
Persistence and the CmsDbContext |
Cendia.UI |
The authoring surface |
Cendia.License |
License verification |
Cendia.Storage.AzureBlob |
Media storage on Azure Blob; unused unless the site selects it |
Cendia.Captcha.Turnstile |
Cloudflare Turnstile for forms; unused unless configuration selects it |
Coming from 1.0
Up to 1.0, Cendia.Captcha.Turnstile was a separate package: a site that used it referenced it
and called builder.Services.AddCendiaTurnstile(). From 1.1 it comes with Cendia.CMS and
AddCendia registers it. Remove the package reference when you update; leaving it in holds it at
the old version, and NuGet then refuses to update Cendia.CMS (NU1605). The
AddCendiaTurnstile() call can stay or go; it is no longer needed.
What you type
Package names are not what goes after using. Whichever package a type lives in, its namespace
says what it is and nothing about how Cendia is assembled:
using Cendia; // AddCendia, MapCendia, CendiaOptions
using Cendia.Schema; // [ContentTypeId], PageType, BlockType, field attributes
using Cendia.FieldTypes; // HtmlString, ContentReference, ContentZone
using Cendia.Content;
using Cendia.Rendering;
using Cendia.Data; // CmsDbContext
What you update
A site made from the Starter names Cendia.CMS in its project file, at the exact version of the
release it was made from. Everything else arrives with it at the same version.
Nothing updates a site for you. To move to a newer release, or back to an older one, change that
one version: in Visual Studio's Manage NuGet Packages with the package source set to the Cendia
feed (https://nuget.cendia.com/index.json) or to All, or with
dotnet add package Cendia.CMS --version <version>. The feed's own page lists every release.
If you add a direct reference to another Cendia package, Cendia.UI for instance, update it first
or together with Cendia.CMS. NuGet will not move Cendia.CMS past a Cendia package the site
holds at an older version; it reports a package downgrade (NU1605) and changes nothing.
Coming from 0.7
Releases up to 0.7.2 named the package Cendia.AspNetCore, with Cendia.SchemaGenerator (and, in
the Starter, Cendia.UI) beside it, and put Core or AspNetCore in the middle of every
namespace. To bring a 0.7 site forward:
- In the project file, replace the
Cendia.AspNetCore,Cendia.UIandCendia.SchemaGeneratorreferences with one:<PackageReference Include="Cendia.CMS" Version="..." />. Do not keepCendia.SchemaGenerator: the generator ships insideCendia.CMSnow, and the old one does not know the new names. - In the code, take
Core.andAspNetCore.out of the Cendia namespaces:Cendia.Core.SchemaandCendia.AspNetCore.Schemaare bothCendia.Schema,Cendia.AspNetCore.RenderingisCendia.Rendering, andusing Cendia.AspNetCore;isusing Cendia;. One exception: what wasCendia.Core.SystemFieldsis nowCendia.Content. - If
appsettings.jsonsets a log level for a Cendia category by name, rename it the same way.
Nothing in the database changes. The platform's own scheduled jobs keep their schedules and history under their new names.
The upgrade promise, and its limit
Package updates flow into an existing project. The scaffold does not.
That is the whole shape of an upgrade: you take new packages, and the files dotnet new gave you
stay yours. It is also why the Starter is kept deliberately minimal — the promise holds only while
the scaffold is small enough to have nothing that needs to flow.
If a release changes something in the scaffolded files, that is an upgrade note, and it will say so in words rather than expecting you to diff a template.
The generator is a build-time dependency
Cendia.CMS carries a source generator as an analyzer. It emits descriptors for your content
types at build time; it is not part of what your site ships.
Where announcements live
Release announcements and upgrade notes are CMS content on this site, not files in this section — see Releases. This section covers the mechanics that do not change between releases; what changed in a given version is published as an announcement, with a date on it.
The split is deliberate, and it is the same one the whole site runs on: a guide describes code, so it lives in the repo and changes in the same commit as the code it documents. An announcement is editorial and dated — written once, never revised — so it is authored in the CMS, where scheduling and a publishing workflow are worth having.