LazyCrud.Cli
1.1.0
dotnet tool install --global LazyCrud.Cli --version 1.1.0
dotnet new tool-manifest
dotnet tool install --local LazyCrud.Cli --version 1.1.0
#tool dotnet:?package=LazyCrud.Cli&version=1.1.0
nuke :add-package LazyCrud.Cli --version 1.1.0
Lazy CRUD command line
Lazy CRUD for Visual Studio, unattended.
This is the same engine the Visual Studio extension runs, with a different face. A build server and a developer generate the same files, protect the same edits, and read the same diagnostic codes — because there is one implementation, not two that agree by inspection.
dotnet tool install --global LazyCrud.Cli
lazycrud status
What it does
Your model is the source. The Lazy CRUD platform packages publish a descriptor — which layers exist, which templates write into them, who owns each output — and this tool reads it and does what it says. It resolves the templates from the packages, runs them through the Visual Studio templating host, records what it wrote, and refuses to overwrite anything you have changed.
lazycrud init-sln --path . --name Shop
lazycrud create-aggregate --agg Orders --entity Order
lazycrud status
lazycrud --help lists every verb. The ones you will use most:
create-aggregate |
Scaffold an aggregate's projects, register it, and generate |
generate / reset-agg |
Regenerate one aggregate |
clean-agg |
Remove exactly the files it recorded as its own |
status |
The environment: toolchain, platform, templates, and every aggregate's state |
list |
The aggregates, their layers, and their manifest state |
Requirements
- Windows, with an installed Visual Studio carrying the Text Template Transformation component. Generation runs the real templating host; nothing here reimplements it. Without it, every generating verb stops with the prerequisite exit code before writing anything.
- .NET 8 or later for the tool itself.
What it will not do
- It never falls back to a template folder on your disk. Local template mode exists for developing
templates, is selected explicitly, is reported when used, and is refused under
--strict. - It never overwrites a generated file you have edited. It stops, names the file, and offers
--force(overwrite, reporting each one) or--skip-modified(keep yours, generate the rest). - It never writes anything after a refusal. A run that stops, stops before the first write.
Exit codes
From the platform's shared table, so a script can branch on them:
| 0 | Success |
| 1 | Assertion failure |
| 2 | Usage error |
| 3 | A prerequisite is unavailable |
| 4 | Invalid fixture or sandbox |
| 5 | Timeout |
| 6 | Contract mismatch |
| 7 | Ownership conflict — something you changed was in the way |
| 8 | Harness failure |
--json writes exactly one machine-readable document on stdout, with every log line on stderr.
Documentation
- Quick start
- Generated-code policy — ownership, markers, hashing
- Troubleshooting — indexed by diagnostic code
- Release notes
The command line and the extension share a version number, because they share an engine.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0 | 112 | 9/10/2026 |