bitzorcas-host is one native dotnet new solution template. The caller selects a complete ProfileChoice and one RuntimeAdapter. The engine copies a verified native tree and conditionally retains the selected Platform module or industry extension. No second-stage composer remains in the customer project.
[!NOTE] For greenfield projects prefer the bitz scaffolder: its scenario presets and orthogonal dimensions (including the Website/RiskControl platform capabilities and ReactAdmin-style frontend options) cover more ground than the template’s 15 combinations. The Profile matrix on this page targets teams that must verify one exact combination and existing template consumers. Both channels share the same verified consumer baseline; retirement conditions for the matrix are tracked in
0004-template-upgrade-map.json.
Four counts with different meanings
| Count | Meaning | Why it differs |
|---|---|---|
| 15 | Public ProfileChoice values | Each value is a complete, supported solution |
| 2 | RuntimeAdapter values | sqlsugar and efcore |
| 30 | Physical generation paths | 15 Profiles × 2 ORMs |
| 3 / 6 | Base topologies / native asset trees | Each topology has two ORM trees |
“15 supported combinations” means public Profiles, not 30. ORM does not create another business Profile, but it changes package references, provider registration, and schema wiring.
The Help text is the authoritative rendering of this selection surface. The terminal below shows real output from dotnet new bitzorcas-host --help plus three typical selections (narrow-terminal line wraps are collapsed to logical lines; generic dotnet new options are omitted):
If your local Help differs from the panel above (legacy split selectors or internal derived parameters), verify the installed template version and package channel per troubleshooting before generating anything.
Resolution model
BaseProfileChoice, PlatformModule, and IndustryExtension are internal derived symbols. Exposing them in Help is a template-contract regression.
Three base topologies
| Base Profile | Workload | Tenancy | Deployment | Project shape |
|---|---|---|---|---|
mini-api-single | API | single | none | API, ServiceDefaults, Unit Tests, Architecture Tests |
default-business-single | business | single | none | Mini Host base + Business Starter Contracts/Application |
default-business-multi | business | multi | aspire | Single Business base + AppHost |
The public template does not generate a JobHost, Website, MiniApp, Integration Worker, Container, or Kubernetes assets. Those are later adoption or deployment concerns; they cannot be enabled through guessed options.
Fifteen public Profiles
| ProfileChoice | Tenancy / deployment | Optional closure |
|---|---|---|
mini-api-single | single / none | no Business Starter, Platform module, or industry extension |
default-business-single | single / none | Business Starter |
default-business-single-authorization | single / none | Authorization runtime module |
default-business-single-masterdata | single / none | MasterData runtime module |
default-business-single-finance | single / none | Finance extension |
default-business-single-hr | single / none | HR extension |
default-business-single-auction | single / none | Auction extension |
default-business-single-legal | single / none | Legal extension |
default-business-multi | multi / aspire | Business Starter |
default-business-multi-authorization | multi / aspire | Authorization runtime module |
default-business-multi-masterdata | multi / aspire | MasterData runtime module |
default-business-multi-finance | multi / aspire | Finance extension |
default-business-multi-hr | multi / aspire | HR extension |
default-business-multi-auction | multi / aspire | Auction extension |
default-business-multi-legal | multi / aspire | Legal extension |
Platform modules and industry extensions are wired differently:
authorizationandmasterdataadd the corresponding Platform runtime package, configuration, and adoption tests;finance,hr,auction, andlegalenter the Business Starter Application as industry-extension packages;- Auction and Legal dependency closure may include Finance, while
industryExtensionremainsauctionorlegal; - one public Profile selects one suffix. Cross-extension adoption is customer work after generation, not a manifest edit.
ORM is a physical choice
RuntimeAdapter is not descriptive metadata. SqlSugar output calls SqlSugar registration and schema paths. EF Core output calls EF Core registration and includes an EF migration contribution. Template verification asserts the selected provider exists and the opposite provider is absent.
# Baseline: generate physical SqlSugar wiring.dotnet new bitzorcas-host -n Acme.Sql \ --ProfileChoice default-business-single \ --RuntimeAdapter sqlsugar
# Control: keep the Profile and switch only to EF Core.dotnet new bitzorcas-host -n Acme.Ef \ --ProfileChoice default-business-single \ --RuntimeAdapter efcoreChoose the ORM when establishing the project. The template is not a runtime dual-provider switch; changing later is a persistence migration with model, schema, transaction, and regression implications.
Selection sequence
Answer four questions:
- Do you need only a framework shell, or a business module immediately? Choose Mini or Business.
- Must requests resolve multiple tenants from a verified JWT
tenant_idclaim? Choose Multi. - Does the first release require Authorization, MasterData, or one industry extension? Select its suffix.
- Is the production baseline SqlSugar or EF Core? Select exactly one RuntimeAdapter.
If the first two answers are uncertain, use mini-api-single as a Feed, License, OpenAPI, and deployment probe. Do not treat it as a production business Profile: it has no Business Starter, multi-tenancy, or Aspire topology.
Typical selections
Minimum API probe
dotnet new bitzorcas-host -n Acme.Probe \ --ProfileChoice mini-api-single \ --RuntimeAdapter sqlsugarIts Development Shell runs without SQL Server or RabbitMQ and is suited to the first-success path.
Single-tenant legal workload
dotnet new bitzorcas-host -n Acme.Cases \ --ProfileChoice default-business-single-legal \ --RuntimeAdapter efcoreOutput includes Business Starter and the Legal extension package. Business rules, permission catalogs, data migration, and production authentication remain customer work.
Multi-tenant authorization platform
dotnet new bitzorcas-host -n Acme.Platform \ --ProfileChoice default-business-multi-authorization \ --RuntimeAdapter sqlsugarAppHost orchestrates SQL Server, Schema Migrator, and API. The Authorization variant also introduces RabbitMQ, authorization bootstrap, and separate persistence-identity parameters.
Generation boundary
The template generates:
- customer-owned Hosts, Starter Module, and tests;
Directory.Packages.props,NuGet.Config, and commercial package references;- Host wiring for ORM, tenancy, OpenAPI, License, health, and schema;
composition-manifest.json, its schema, andcomposition-plan.json;- behavioral tests for selected Platform/Industry adoption.
It does not generate a finished business system or copy src/Framework/** or src/Platform/**. Frontend, production secrets, production License, data migration, container assets, and business acceptance remain outside template scope.
Verification strength
The foundation template gate physically creates all 30 generation paths. It then restores commercial packages, builds, tests, and publishes 22 stratified combinations, with trim publishing on 10. This release gate is separate from the repository’s routine merge gate.
Consumer teams still verify their exact Profile:
# Preserve repeatable evidence in restore → build → test → API publish order.dotnet restore <Solution>.slnxdotnet build <Solution>.slnx --configuration Release --no-restoredotnet test <Solution>.slnx --configuration Release --no-build --no-restoredotnet publish src/Hosts/<Name>.Api/<Name>.Api.csproj \ --configuration Release --no-build --no-restore