Missael.Gen
1.0.2
dotnet tool install --global Missael.Gen --version 1.0.2
dotnet new tool-manifest
dotnet tool install --local Missael.Gen --version 1.0.2
#tool dotnet:?package=Missael.Gen&version=1.0.2
nuke :add-package Missael.Gen --version 1.0.2
missael-gen — Entity Generator for .NET Clean Architecture
Script CLI para generar y eliminar features completas por entidad en soluciones .NET con estructura Clean Architecture.
Proyectos soportados
El script espera que existan estas 4 carpetas con el mismo prefijo:
{Project}.Domain
{Project}.Application
{Project}.Infrastructure
{Project}.Api
Ejemplo con
Project9:Project9.Domain,Project9.Application,Project9.Infrastructure,Project9.Api
Comandos
| Comando | Descripción |
|---|---|
entity |
Genera todos los archivos de una entidad y registra el módulo en Program.cs y ApiGroups.cs |
remove |
Elimina los archivos generados y limpia los registros en Program.cs y ApiGroups.cs |
Sintaxis
missael-gen <command> <entityName> <projectBase> [--props Nombre:Tipo,...] [--group NOMBRE]
Parámetros
| Parámetro | Requerido | Descripción |
|---|---|---|
command |
✅ | entity o remove |
entityName |
✅ | Nombre de la entidad, ej: Order |
projectBase |
✅ | Base de los proyectos, ej: Project9 |
--props |
❌ | Propiedades adicionales en formato Nombre:Tipo,Nombre:Tipo |
--group |
❌ | Nombre del grupo Swagger. Default: DAPPER (se guarda en mayúsculas) |
Comando entity
Ejemplo
missael-gen entity Order Project9 --props Number:string,Price:decimal --group DAPPER
Archivos generados
Domain — {Project}.Domain/
| Archivo | Contenido |
|---|---|
Order.cs |
Clase con Id (int) + propiedades de --props |
Application — {Project}.Application/
| Archivo | Descripción |
|---|---|
DTOs/Requests/CreateOrderRequest.cs |
DTO de creación (sin Id) |
DTOs/Responses/OrderResponse.cs |
DTO de respuesta (con Id) |
Interfaces/IOrderRepository.cs |
Contrato CRUD async (GetAll, GetById, Create, Update, Delete) |
Services/OrderService.cs |
Servicio con AutoMapper, repositorio, DTOs y errores |
Profiles/OrderProfile.cs |
Perfil AutoMapper (Order ↔ OrderResponse, CreateOrderRequest → Order) |
Common/ErrorCatalog/OrderErrors.cs |
Catálogo de errores (NotFound = "Order not found") |
Infrastructure — {Project}.Infrastructure/
| Archivo | Descripción |
|---|---|
Repositories/OrderRepository.cs |
Implementación Dapper con DbConnectionFactory |
Api — {Project}.Api/
| Archivo | Descripción |
|---|---|
Controllers/OrderController.cs |
Controller con endpoints GET, POST, PUT, DELETE y [ApiExplorerSettings(GroupName = ApiGroups.ORDER)] |
Registros automáticos
ApiGroups.cs — Agrega la constante del grupo Swagger:
public const string ORDER = "DAPPER | ORDER | DAPPER";
Program.cs — Inserta el bloque de DI antes de var app = builder.Build():
// ==========================
// ORDER MODULE
// ==========================
builder.Services.AddScoped<IOrderRepository, OrderRepository>();
builder.Services.AddScoped<OrderService>();
Si la constante o el registro ya existen, no se duplican.
Comando remove
Ejemplo
missael-gen remove Order Project9
removeno usa--propsni--group.
Archivos eliminados
Project9.Domain/Order.cs
Project9.Application/DTOs/Requests/CreateOrderRequest.cs
Project9.Application/DTOs/Responses/OrderResponse.cs
Project9.Application/Interfaces/IOrderRepository.cs
Project9.Application/Services/OrderService.cs
Project9.Application/Profiles/OrderProfile.cs
Project9.Application/Common/ErrorCatalog/OrderErrors.cs
Project9.Infrastructure/Repositories/OrderRepository.cs
Project9.Api/Controllers/OrderController.cs
También limpia ApiGroups.cs y Program.cs eliminando las líneas correspondientes a la entidad.
⚠️ Solo se eliminan archivos, no carpetas.
Notas y limitaciones
SQL en el Repository — Los métodos
InsertyUpdatevienen con placeholders. Debes ajustar el SQL real según tu tabla:INSERT INTO Order (...) VALUES (...) RETURNING Id UPDATE Order SET ... WHERE Id = @IdRemoveFromProgram— Usastring.Replaceliteral. Si el código enProgram.cstiene formato distinto (tabs, espacios extra), puede que no detecte el bloque a eliminar.RemoveFromApiGroups— Elimina líneas que contenganconst string ORDER. Si la constante está formateada de otra manera, puede no detectarse.
Cheatsheet
# Generar entidad con propiedades y grupo personalizado
missael-gen entity Order Project9 --props Number:string,Price:decimal --group DAPPER
# Generar entidad sin propiedades
missael-gen entity Customer Project9 --group CRM
# Eliminar feature completa
missael-gen remove Order Project9
| 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.