You can add a package reference with the .NET Core SDK:
$ dotnet add package --version 0.15.0-preview1 wasmtime
Note that the --version
option is required because the package is currently prerelease.
For this introduction, we'll be using a simple WebAssembly module that imports a hello
function and exports a run
function:
(module
(func $hello (import "" "hello"))
(func (export "run") (call $hello))
)
To use this module from .NET, create a new console project:
$ mkdir wasmintro
$ cd wasmintro
$ dotnet new console
Next, add a reference to the Wasmtime package:
$ dotnet add package --version 0.15.0-preview1 wasmtime
Replace the contents of Program.cs
with the following code:
using System;
using Wasmtime;
namespace Tutorial
{
class Program
{
static void Main(string[] args)
{
using var host = new Host();
host.DefineFunction(
"",
"hello",
() => Console.WriteLine("Hello from C#!")
);
using var module = host.LoadModuleText(
"hello",
"(module (func $hello (import \"\" \"hello\")) (func (export \"run\") (call $hello)))"
);
using dynamic instance = host.Instantiate(module);
instance.run();
}
}
}
This host defines a function called hello
that simply prints a hello message.
It then loads the module into the host in WebAssembly text format and invokes the module's run
export.
To run the application, simply use dotnet
:
$ dotnet run
This should print Hello from C#!
.
Use dotnet
to build the repository:
$ dotnet build
This will download the latest development snapshot of Wasmtime for your platform.
Use dotnet
to run the unit tests:
$ dotnet test
Use dotnet
to create a NuGet package:
$ cd src
$ dotnet pack -c Release
This will create a .nupkg
file in src/bin/Release
.
By default, local builds will use a -dev
suffix for the package to differentiate between official packages and development packages.