Release v20.49.0
Summary
Setting up Arc without wiring Chronicle is a valid choice (commands and queries can run over MongoDB or EF Core). But if you do use Chronicle, forgetting WithChronicle() used to surface as a cryptic container error at first use. This PR makes that mistake obvious across three layers — a compile-time analyzer, an actionable runtime error, and clearer docs and API reference.
Added
- New
ARCCHR0005analyzer that warns at compile time when a project sets up Arc withAddCratisArcbut never callsWithChronicle()orAddCratis(), yet uses Chronicle in the same project (an aggregate root, reactor, reducer, projection,[EventType]event, or a type injectingIEventLog/IEventStore). It stays silent when Chronicle genuinely is not used.
Changed
- Resolving a Chronicle service such as
IEventLogwithout Chronicle configured now throws an actionable error that names the command, query, or validator and its parameter, and points at the fix (WithChronicle()orAddCratis()) instead of a raw "Unable to resolve service for typeEventStoreName" container exception. - Expanded the IntelliSense/API documentation on
AddCratis,UseCratis,AddCratisArc,UseCratisArc, andWithChronicle(all overloads): they clarify that the application hosts the Chronicle client — which connects to a separately running Chronicle instance — rather than an embedded engine, and include runnable examples for the common setups.