Skip to content

Installation

3cxc edited this page Sep 12, 2026 · 3 revisions

Installation

Requirements

Component Minimum
.NET SDK 8.0
OS (host) Windows (x64)
Runtime .NET NativeAOT (plugin-side)

Plugins are compiled with PublishAot=true and must export unmanaged entry points. The host must also be built with NativeAOT or contain the CLR if loading non-AOT plugins.


Adding NativePluginKit to a Project

Option 1 — NuGet

<PackageReference Include="NativePluginKit" Version="1.0.0" />

Option 2 — Project Reference

If you are working inside the same solution:

<ProjectReference Include="..\NativePluginKit\NativePluginKit.csproj" />

Option 3 — Git Submodule

git submodule add https://github.com/GoWelkinDev/NativePluginKit.git

Host-Side Setup

In your client's initialization code, build a HostApiTable and create a PluginLoader:

using NativePluginKit.Loader;
using NativePluginKit.Loader.Constants;

var api = HostApiBridgeBuilder.Create(
    transition: (scenePathPtr, fadeOut) => { /* ... */ },
    printLog:   (messagePtr)   => { /* ... */ }
);

var loader = new PluginLoader(
    logAction: msg => Console.WriteLine(msg),
    apiTable:  api,
    apiVersion: new Version(1, 0, 0)
);

loader.LoadPluginsFromDirectory(
    Path.Combine(AppContext.BaseDirectory, "plugins")
);

Plugin-Side Setup

  1. Create a new Class Library targeting net8.0.

  2. Add the following to the .csproj:

    <PublishAot>true</PublishAot>
    <NativeLib>Shared</NativeLib>
    <IlcExportUnmanagedEntrypoints>true</IlcExportUnmanagedEntrypoints>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  3. Reference NativePluginKit (see above).

  4. Add a class inheriting from Plugin (see the tutorial).

  5. Build the plugin:

    dotnet publish -c Release -r win-x64
  6. Copy the resulting YourPlugin.dll into the host's plugins/ folder.

Clone this wiki locally