Novolis.CodeGen.Bindings
2026.1.2.53
dotnet add package Novolis.CodeGen.Bindings --version 2026.1.2.53
NuGet\Install-Package Novolis.CodeGen.Bindings -Version 2026.1.2.53
<PackageReference Include="Novolis.CodeGen.Bindings" Version="2026.1.2.53" />
<PackageVersion Include="Novolis.CodeGen.Bindings" Version="2026.1.2.53" />
<PackageReference Include="Novolis.CodeGen.Bindings" />
paket add Novolis.CodeGen.Bindings --version 2026.1.2.53
#r "nuget: Novolis.CodeGen.Bindings, 2026.1.2.53"
#:package Novolis.CodeGen.Bindings@2026.1.2.53
#addin nuget:?package=Novolis.CodeGen.Bindings&version=2026.1.2.53
#tool nuget:?package=Novolis.CodeGen.Bindings&version=2026.1.2.53
Novolis.CodeGen.Bindings
Typed C-ABI manifests, shared string emitters, and filesystem-backed binding codegen for Novolis consumers.
The library binds C ABIs: native C libraries and C++ libraries that expose an unmangled extern "C" surface (usually through a shim). It does not generate bindings for C++ classes, overloads, exceptions, or ownership models.
Install
dotnet add package Novolis.CodeGen.Bindings
Prerequisites: .NET 10 SDK (net10.0).
Quick start
- Author typed signatures (
NativeSignature/NativeParameter). - Put them in an
InteropExportsFragment(and optionalFacadeTypesFragment). - Register jobs with
BindingEmitJob.LibraryImport/FacadeForward/DynamicExports. - Call
BindingCodegen.GeneratefromNovolis.CodeGen.Bindings.Roslyn.
using Novolis.CodeGen.Bindings;
using Novolis.CodeGen.Bindings.Roslyn;
var manifests = BindingManifestSource.Create(
new InteropExportsFragment(
Id: "mylib",
SchemaVersion: 1,
Header: null,
Description: null,
DllName: "mylib",
Policy: new InteropPolicySpec([], [], "AggressiveInlining", UseDisableRuntimeMarshalling: true),
Structs: [],
Imports:
[
new InteropImportSpec(
"Init",
NativeSignature.Create(
NativeType.Void,
new NativeParameter("flags", NativeType.UInt32))),
]));
var options = BindingCodegenOptions.Physical(
@"d:\repo",
manifests,
"dotnet run --project codegen/Example.CodeGen -- generate");
var project = BindingProject.Create("MyLib")
.AddJob(BindingEmitJob.LibraryImport(
"interop",
"mylib",
"MyLibNative",
"src/MyLib.Bindings/Interop/MyLibNative.g.cs",
"MyLib.Interop",
"MyLib.Bindings",
libraryConstantName: "MyLibDll"));
BindingCodegen.Generate(project, options);
NativeSignature carries parameter names as well as types, so consumer manifests control the emitted C# ABI exactly. Use the generic BindingCodegenHost<TPhase, TContext> only when you need Roslyn hooks (Raylib EndDrawing rewrite, docs injection, and similar).
Related packages
| Package | When to use |
|---|---|
Novolis.CodeGen.Bindings.Roslyn |
Default BindingCodegen.Generate, hooks, formatting, and structural parity comparison |
Novolis.CodeGen.Pipeline |
Step runner with fingerprinted skip/cache for maintainer pipelines |
More documentation
- Getting started
- Binding codegen spec
- TinyExpr lab:
d:\novolis\novolis-lab\labs\codegen\TinyExprBindings\
Support
Pre-release platform library. Public API is fully documented with strict XML (CS1591 enforced).
| Product | Versions 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. |
-
net10.0
- System.IO.Abstractions (>= 22.3.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Novolis.CodeGen.Bindings:
| Package | Downloads |
|---|---|
|
Novolis.Audio.Manifests
C#-authoritative binding manifests for Novolis.Audio. |
|
|
Novolis.Raylib.Manifests
C#-authoritative binding manifests for Novolis.Raylib. |
|
|
Novolis.CodeGen.Bindings.Roslyn
Roslyn hook host, emit writer, and compilation unit comparison for binding codegen. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.1.2.53 | 105 | 10/18/2026 |
| 2026.1.2.51 | 124 | 10/18/2026 |
| 2026.1.2.50 | 147 | 10/4/2026 |
| 2026.1.2.49 | 129 | 10/4/2026 |
| 2026.1.2.48 | 163 | 10/1/2026 |
| 2026.1.2.47 | 136 | 9/30/2026 |