NSmithy.MSBuild
0.1.0
dotnet add package NSmithy.MSBuild --version 0.1.0
NuGet\Install-Package NSmithy.MSBuild -Version 0.1.0
<PackageReference Include="NSmithy.MSBuild" Version="0.1.0" />
<PackageVersion Include="NSmithy.MSBuild" Version="0.1.0" />
<PackageReference Include="NSmithy.MSBuild" />
paket add NSmithy.MSBuild --version 0.1.0
#r "nuget: NSmithy.MSBuild, 0.1.0"
#:package NSmithy.MSBuild@0.1.0
#addin nuget:?package=NSmithy.MSBuild&version=0.1.0
#tool nuget:?package=NSmithy.MSBuild&version=0.1.0
<p align="center"> <img src="https://raw.githubusercontent.com/thomaslaich/smithy-dotnet/main/website/public/brand/nsmithy_logo_1.png" alt="NSmithy logo" width="320" /> </p>
<p align="center"> <a href="https://github.com/thomaslaich/smithy-dotnet/actions/workflows/ci.yml"> <img src="https://github.com/thomaslaich/smithy-dotnet/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI" /> </a> <a href="https://thomaslaich.github.io/smithy-dotnet/"> <img src="https://github.com/thomaslaich/smithy-dotnet/actions/workflows/docs.yml/badge.svg?branch=main" alt="Docs" /> </a> <a href="https://www.nuget.org/packages/NSmithy.Client"> <img src="https://img.shields.io/nuget/v/NSmithy.Client" alt="NuGet" /> </a> <a href="https://dotnet.microsoft.com/"> <img src="https://img.shields.io/badge/.NET-net10.0-512BD4" alt=".NET 10" /> </a> <a href="LICENSE"> <img src="https://img.shields.io/github/license/thomaslaich/smithy-dotnet" alt="License" /> </a> <a href="https://github.com/smithy-lang/smithy/releases/tag/1.68.0"> <img src="https://img.shields.io/badge/smithy--cli-1.68.0-orange" alt="Smithy CLI" /> </a> </p>
Preview: NSmithy is in preview — expect some API changes before 1.0. Protocol implementations are not yet on par with the Smithy reference implementations.
NSmithy
Docs · Design Docs · smithy.io
NSmithy is a preview-stage .NET toolkit that turns a Smithy model into idiomatic C# at build time. From a single contract you get typed clients, server scaffolding, and shared model types — fully integrated into your MSBuild workflow.
Features
- Contract-first, protocol-agnostic: Define your service once in Smithy — operations, shapes, and errors — independent of any wire protocol. The same model can target a different protocol without rewriting your contract.
- MSBuild integration: Generate C# models, typed clients, and ASP.NET Core minimal API server stubs from a Smithy IDL as part of
dotnet build— no separate codegen step, no Java or JRE installation required. - Protocol support: REST JSON, REST XML, RPC v2 CBOR, and gRPC.
- Conformance-tested: Validated against official Smithy, AWS, and alloy conformance suites.
Development
The recommended way to work on this repo is with Nix and devenv.
Install Nix (recommended: Determinate Nix) and devenv.
Optionally install direnv to activate the dev environment automatically when entering the directory (
direnv allow). Without it, rundevenv shellmanually.Use the
justrecipes to build, test, and package:just # list all available recipes just build # build the codegen JAR and .NET solution just test # run the test suite just fmt # format all code just docs # start the documentation dev server just ci # run the full CI pipeline locally
Related Projects
- Smithy — the IDL and protocol framework NSmithy is built on.
- smithy4s — the main inspiration for NSmithy; generates Scala code from Smithy models with similar goals, though with a more sophisticated typeclass-based codec architecture that cleanly separates schema interpretation from serialization.
- alloy — Smithy extensions used by NSmithy for
simpleRestJsonand gRPC protocols. - smithy-go / smithy-typescript — official Smithy codegen plugins for Go and TypeScript, which NSmithy draws inspiration from.
- TypeSpec — Microsoft's alternative API description language with similar goals. Compiles to OpenAPI, JSON Schema, Protobuf, and more; has first-party .NET emitters.
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on NSmithy.MSBuild:
| Package | Downloads |
|---|---|
|
NSmithy.Client
NSmithy — C# code generation and runtime toolkit for Smithy models. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 7 | 6/8/2026 |
| 0.1.0-preview.15 | 64 | 5/28/2026 |
| 0.1.0-preview.14 | 67 | 5/28/2026 |
| 0.1.0-preview.13 | 61 | 5/28/2026 |
| 0.1.0-preview.12 | 65 | 5/27/2026 |
| 0.1.0-preview.11 | 59 | 5/25/2026 |
| 0.1.0-preview.10 | 63 | 5/24/2026 |
| 0.1.0-preview.9 | 62 | 5/20/2026 |
| 0.1.0-preview.8 | 75 | 5/5/2026 |
| 0.1.0-preview.6 | 73 | 5/5/2026 |
| 0.1.0-preview.5 | 88 | 5/3/2026 |
| 0.1.0-preview.4 | 104 | 5/3/2026 |
| 0.1.0-preview.3 | 53 | 5/1/2026 |