Unturned's managed assemblies (Assembly-CSharp.dll, com.rlabrecque.steamworks.net.dll, UnturnedDat.dll, the SDG/Unity dependencies, and the API XML docs), packaged for NuGet and refreshed automatically each time Unturned ships a new build. Reference a package instead of hand-copying DLLs out of the game's Managed folder after every patch.
Redistributed with permission. Nelson Sexton (Smartly Dressed Games) gave explicit written approval to distribute Unturned's libraries — see issue #8.
dotnet add package RocketModFix.Unturned.Redist.Serveror in your .csproj:
<PackageReference Include="RocketModFix.Unturned.Redist.Server" Version="x.y.z" />Choose by side (client or server). Use a .Publicized variant when your plugin needs to touch private/internal members — their visibility is rewritten to public.
| Package | For |
|---|---|
| Client-side tools and mods | |
| Server-side plugins and tools | |
| Client mods that need non-public members | |
| Server plugins that need non-public members |
Client and Server carry two streams under the same package id:
- Stable — Unturned's default branch, versioned
x.y.z.n. - Preview — Unturned's
previewbranch, published as a prereleasex.y.z.n-preview<build>. Enable "include prerelease" in your NuGet client to pull it.
The standalone …Client-Preview and …Server-Preview packages are legacy. They still update for projects that already reference them, but new code should use the prerelease stream above.
Everything runs on GitHub Actions, with no external servers. A scheduled job watches Steam for new Unturned builds; when one lands it downloads the build, repackages the managed DLLs, and opens a pull request. The PR is validated (files present, hashes match, version not a downgrade) and auto-merged, which publishes the affected package to NuGet.
📖 ARCHITECTURE.md has the full picture: the workflows, the variant matrix in .github/variants.json, how the 4 Steam sources map to 10 directories and 6 packages, and how to add a variant.