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:
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):
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.