Missael.Gen 1.0.2

dotnet tool install --global Missael.Gen --version 1.0.2
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Missael.Gen --version 1.0.2
                    
This package contains a .NET tool you can call from the shell/command line.
#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

remove no usa --props ni --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 Insert y Update vienen con placeholders. Debes ajustar el SQL real según tu tabla:

    INSERT INTO Order (...) VALUES (...) RETURNING Id
    UPDATE Order SET ... WHERE Id = @Id
    
  • RemoveFromProgram — Usa string.Replace literal. Si el código en Program.cs tiene formato distinto (tabs, espacios extra), puede que no detecte el bloque a eliminar.

  • RemoveFromApiGroups — Elimina líneas que contengan const 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.0.2 119 3/4/2026
1.0.1 97 3/4/2026
1.0.0 101 3/4/2026