WACS.ComponentModel.Bindgen.Lib
0.1.2
dotnet add package WACS.ComponentModel.Bindgen.Lib --version 0.1.2
NuGet\Install-Package WACS.ComponentModel.Bindgen.Lib -Version 0.1.2
<PackageReference Include="WACS.ComponentModel.Bindgen.Lib" Version="0.1.2" />
<PackageVersion Include="WACS.ComponentModel.Bindgen.Lib" Version="0.1.2" />
<PackageReference Include="WACS.ComponentModel.Bindgen.Lib" />
paket add WACS.ComponentModel.Bindgen.Lib --version 0.1.2
#r "nuget: WACS.ComponentModel.Bindgen.Lib, 0.1.2"
#:package WACS.ComponentModel.Bindgen.Lib@0.1.2
#addin nuget:?package=WACS.ComponentModel.Bindgen.Lib&version=0.1.2
#tool nuget:?package=WACS.ComponentModel.Bindgen.Lib&version=0.1.2
WACS.ComponentModel.Bindgen.Lib
Programmatic WIT ↔ C# binding generator for the WACS Component Model — both directions:
- Forward:
.wit→ C# typed interfaces (host- and guest-side), tagged with[WitSource]soHostPackageResolvercan match imports at transpile time - Reverse: transpiled
.dll→ regenerated.wit+ bindings (round-trip / refactoring workflows)
This is the library API used by the wacs bindgen verb in
WACS.Cli. Reference it directly from custom
build steps, IDE integrations, or codegen pipelines that want full control over the
generation.
Install
dotnet add package WACS.ComponentModel.Bindgen.Lib
Forward — WIT to C#
using Wacs.ComponentModel.Bindgen;
var generator = new ForwardBindgen();
var result = generator.Generate(
witPath: "wit/cli/world.wit",
options: new ForwardOptions
{
Namespace = "MyApp.Wasi",
TargetSide = BindingSide.Host, // or Guest
});
foreach (var (path, source) in result.Files)
File.WriteAllText(Path.Combine("./gen", path), source);
Reverse — DLL to WIT
var reverse = new ReverseBindgen();
var (witFiles, csFiles) = reverse.Regenerate("path/to/transpiled.dll");
File.WriteAllText("regen/world.wit", witFiles["world.wit"]);
Build-time source generation
For projects that consume WIT at compile time (no separate wacs bindgen invocation), the
sibling source generator
WACS.ComponentModel.Bindgen.SourceGen
runs inside the Roslyn pipeline. Both packages share the same emission core; this library
exists for the imperative case where the codegen needs to drive directly (e.g. tooling that
iterates on WIT during development).
Documentation
- Top-level WACS README
docs/COMPONENT_CHAINING.mdfor the runtime side
License
Apache-2.0
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- WACS.ComponentModel (>= 0.7.1)
-
net8.0
- WACS.ComponentModel (>= 0.7.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.