DTOMaker.CLI 2.0.18-dev

This is a prerelease version of DTOMaker.CLI.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet tool install --global DTOMaker.CLI --version 2.0.18-dev
                    
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 DTOMaker.CLI --version 2.0.18-dev
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=DTOMaker.CLI&version=2.0.18-dev&prerelease
                    
nuke :add-package DTOMaker.CLI --version 2.0.18-dev
                    

Icon

DTOMaker

Build-Deploy NuGet Version NuGet Downloads GitHub License GitHub Sponsors GitHub Repo stars

Warning: This is pre-release software under active development. Breaking changes may occur.

This project contains model-driven compile-time source generators for quickly creating and maintaining polymorphic, immutable DTOs (Data Transport Objects) supporting various serialization protocols.

The objective of these generators is to improve developer productivity, saving time and reducing errors incurred maintaining boilerplate DTO code, by allowing developers to focus on the more interesting data model design, rather than on coding the implementations.

Open Source Declaration

This is an open source project. This means that you are free to use the source code and released binaries within the terms of the license. Use of such constitutes agreement to the license terms.

This project is maintained by unpaid developers who enjoy doing this. Please remember that developers are ordinary people, probably much like you, that have families, homes, vehicles and other everyday expenses.

If you find this project useful in any way, including generating revenue for your organisation, we ask that you consider sponsoring this project financially. We leave it up to you to decide how much. Any amount is appreciated.

You can contribute via GitHub Sponsors.

Features

  • Models defined via C# interfaces with attributes.
    • Source generators create implementations at compile time.
  • Properties can be basic .NET types such as integers, floats, strings, Guid, etc.
    • Raw byte arrays are supported using the built-in Octets type.
    • Other common types such as DateTime, DateTimeOffset, TimeSpan are supported by built-in converters.
    • User-defined value types can be supported via user-defined converters to built-in types.
  • Nullable value types.
  • Polymorphic types.
  • Freezable types: Instances are mutable until frozen.
  • Serialization protocols:
    • JSON (System.Text.Json)
    • JSON (Newtonsoft.Json)
    • MessagePack 2.x
    • MemBlocks
  • Collections. Collections based on balanced binary trees are supported.

Example

using DTOMaker.Models;
namespace MyModels;
[Entity(1)] public interface INode : IEntityBase
{
    [Member(1)] String Key { get; set; } 
}
[Entity(2)] public interface IStringNode : INode
{
    [Member(1)] String Value { get; set; } 
}
[Entity(3)] public interface INumberNode : INode
{
    [Member(1)] Int64 Value  { get; set; } 
}
[Entity(4)] public interface ITree : IEntityBase
{
    [Member(1)] ITree? Left  { get; set; }
    [Member(2)] ITree? Right { get; set; }
    [Member(3)] INode? Node  { get; set; }
}

Workflow

flowchart TB
    def(Define models e.g. IMyDTO.cs)
    ref1(Reference DTOMaker.Models)
    ref2(Reference runtime e.g. DTOMaker.Runtime.JsonSystemText)
    ref3(Reference source generator e.g. DTOMaker.SrcGen.JsonSystemText)
    bld(Build/Run)
    ref1-->def
    def-->ref2
    ref2-->ref3
    ref3-->bld

Ongoing Development

Coming next in V2.0

  • common interface support across all serializers
  • BitSet type

Coming later in V2.1+

  • ref type converters
  • incremental serialization
  • MessagePack 3.x serialization
  • Orleans serialization
  • Protobuf.Net serialization
  • model.json generation
  • command-line alternative
  • variant native type support
  • variable length arrays
  • logical value equality
  • common pattern extensions

License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.

Miscellaneous

  • This readme was last updated 3rd Mar 2026.
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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
2.0.19-dev 0 3/5/2026
2.0.18-dev 0 3/5/2026
2.0.17-dev 41 3/3/2026
2.0.16-dev 40 3/3/2026
2.0.15-dev 59 3/1/2026
2.0.13-dev 59 2/27/2026
2.0.9-dev 60 2/27/2026
2.0.7-dev 60 2/26/2026
1.11.8-dev 83 2/20/2026
1.10.4 89 2/14/2026
1.9.5 108 2/7/2026
1.9.4-dev 91 2/6/2026
1.9.2-dev 88 2/1/2026
1.8.7 107 1/26/2026
1.8.6 102 1/23/2026
1.8.4 103 1/22/2026
1.8.1-dev 100 1/22/2026
1.7.25 88 1/19/2026
1.7.22 87 1/18/2026
1.7.20-dev 98 1/18/2026
Loading failed