Nori.PluginSDK
2.2.0
dotnet add package Nori.PluginSDK --version 2.2.0
NuGet\Install-Package Nori.PluginSDK -Version 2.2.0
<PackageReference Include="Nori.PluginSDK" Version="2.2.0" />
<PackageVersion Include="Nori.PluginSDK" Version="2.2.0" />
<PackageReference Include="Nori.PluginSDK" />
paket add Nori.PluginSDK --version 2.2.0
#r "nuget: Nori.PluginSDK, 2.2.0"
#:package Nori.PluginSDK@2.2.0
#addin nuget:?package=Nori.PluginSDK&version=2.2.0
#tool nuget:?package=Nori.PluginSDK&version=2.2.0
Nori Plugin SDK
Developer SDK for the Nori Desktop Plugin Specification, synchronized with the public contracts implemented by MF-Dust/Nori.Desktop.
Current baseline:
- Plugin API: 2.0
- Manifest schema: 1
- Target framework: .NET 10 (
net10.0) - Runtime model: trusted in-process .NET plugin
- Host capability currently available:
ui.webview
Repository layout
src/Nori.PluginSDK/ compile-time contracts
examples/HelloNori/ minimal plugin example
docs/plugin-authoring.md lifecycle and API guidance
docs/packaging.md manifest and .noripack layout
Build
dotnet build Nori.PluginSDK.slnx
The SDK project emits an assembly named Nori.PluginRuntime because that is the contract assembly name used by Nori Desktop. Its assembly version stays at 0.0.0.0; Plugin API compatibility is governed by manifest.json apiVersion, not CLR assembly versioning.
Install from NuGet
Published SDK releases can be referenced directly from NuGet:
dotnet add package Nori.PluginSDK --version 2.0.0
or from a project file:
<PackageReference Include="Nori.PluginSDK" Version="2.0.0" />
The package contains the contract assembly only as a compile-time ref/net10.0 asset. Plugin packages must not ship Nori.PluginRuntime.dll; Nori Desktop provides the runtime contract assembly.
Repository releases use tags matching the package version, for example v2.0.0. The publish workflow verifies that the tag matches the <Version> value in Nori.PluginSDK.csproj before pushing to NuGet.org.
Reference from a plugin
During development inside this repository:
<ProjectReference Include="../../src/Nori.PluginSDK/Nori.PluginSDK.csproj" Private="false" />
The Private="false" part matters: the plugin package must not contain Nori.PluginRuntime.dll. Nori Desktop binds the contract reference to its own host assembly and rejects packages that include a duplicate contract DLL.
For package distribution of the SDK:
dotnet pack src/Nori.PluginSDK/Nori.PluginSDK.csproj -c Release
The resulting Nori.PluginSDK package carries the contract as a compile-time ref/net10.0 asset with no runtime asset.
Minimal plugin
using Nori.PluginRuntime;
public sealed class Plugin : INoriPlugin
{
public ValueTask ActivateAsync(IPluginContext context, CancellationToken cancellationToken)
{
context.Logger.Info("Hello Nori");
return ValueTask.CompletedTask;
}
public ValueTask DeactivateAsync(CancellationToken cancellationToken)
=> ValueTask.CompletedTask;
}
See examples/HelloNori for storage, contributions, and WebView capability usage.
Public API boundary
The SDK intentionally contains only contracts already present in Nori Desktop:
INoriPlugin,IPluginContext,PluginDescriptorIPluginLogger,IPluginStorage,IPluginAssetsIPluginContribution,IContributionRegistry,IPluginRegistrationIPluginCapability,IPluginCapabilities,PluginCapabilityStatus,PluginCapabilityAttributeIWebViewCapability,PluginWebViewOptions,IPluginWebViewWindowPluginException
Host implementation details such as package installation, bridge routing, AssemblyLoadContext, state management, and window hosting are intentionally absent.
| 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
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.