Skip to content

Installation

Prerequisites

  • Windows 10 or later — HydroSym runs on Windows; plugins must target win-x64.
  • .NET 8 SDK or later — Download from dot.net. The SDK (not just the runtime) is required for building.
  • HydroSym 2025.55 or later — Plugin API v1 requires this version or newer.

Verify your .NET installation:

dotnet --version
# 8.0.x or higher

Install the SDK package

Create a new class library and add the NuGet package:

dotnet new classlib -n AcmeErpPlugin -f net8.0
cd AcmeErpPlugin
dotnet add package PARO.HydroSym.PluginSDK

Or use the project template (installs the package and sets up the required .csproj settings):

dotnet new install PARO.HydroSym.PluginSDK.Templates
dotnet new hydrosym-plugin -n AcmeErpPlugin

Required project settings

HydroSym loads plugins as native DLLs. This requires NativeAOT compilation, which produces a self-contained .dll with no .NET runtime dependency.

Add the following to your .csproj:

<PropertyGroup>
  <OutputType>Library</OutputType>
  <TargetFramework>net8.0</TargetFramework>
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  <PublishAot>true</PublishAot>
  <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  <Nullable>enable</Nullable>
</PropertyGroup>

NativeAOT constraints

NativeAOT does not support runtime reflection, dynamic, or Assembly.Load. The SDK is designed to work within these constraints. Avoid System.Text.Json source generation pitfalls — use the SDK's built-in serialization helpers.

Process transport (alternative)

If you cannot use NativeAOT (for example, your plugin uses a library that relies on reflection), you can run your plugin as a separate process instead of a DLL. In that case the .csproj does not need NativeAOT settings, but you must implement the JSON-RPC process protocol.

See Transport: Process for details.