Release from a copied folder that matches the intended distribution. A runtime-minimal package has the DLL, metadata, and requested assets. Include source, symbols, or documentation when they are intended release material. Keep private settings, logs, test saves, credentials, and unrelated build intermediates outside the folder. Use the same folder for a local installation check and a Workshop upload through Rain World’s supported interface.
Build first with the SDK-style command in Project file. Take the mod DLL from that project’s bin output and copy it into a fresh package folder. A BepInEx plugin needs BepInPlugin metadata plus loader and game references. MSBuild Reference metadata Private controls copied reference assemblies. Inspect the copied package instead of relying on project metadata. Include Rain World assemblies, BepInEx.dll, HOOKS-Assembly-CSharp.dll, Unity assemblies, or another mod’s DLLs only when their owner permits redistribution and the package needs them. First plugin shows the checked repository build route and Mod manifests explains the two dependency systems.
Create a clean folder with the intended package layout. A small code release can begin as:
myexample.dash/
modinfo.json
plugins/
MyExampleDash.dll
text/
text_eng/
strings.txt
assets/
dash_icon.pngInclude only assets that the package actually requests. A file under assets has no automatic renderer registration, and a file at the root may be overridden by version-specific placement. Use Asset resolution to choose the final path. If the mod has a v1.11.8 folder, inspect both it and the root. Do not include generated mergedmods output.
Run this preflight on the copied folder:
- Parse
modinfo.jsonand check the ID, name, version, authors, description, and declared requirements. - Compare each Rain World requirement ID with the provider’s current manifest. Compare each BepInEx dependency GUID with the provider’s plugin metadata.
- List every release file and compare it with the distribution intent. Exclude private notes, logs, saves, credentials, unrelated build intermediates, and files from the game installation. Keep source, symbols, and documentation when they are intended release material.
- Check text, sound, sprite, room, and other assets at the exact paths their consumers request.
- Write brief release notes with the mod version, supported game baseline, user-visible changes, known limits, and required dependencies.
Install or subscribe to that copied package in a test setup. Enable its dependencies and check the package, rather than a DLL still sitting in the project output directory. Start a new session and an affected existing session when the mod supports both. Exercise each advertised feature once, open its Remix page if present, change language if it ships translations, and visit every changed room or screen. Restart and repeat the smallest useful checks. Record the game build, mod version, enabled dependency versions, operating system, compatibility layer when used, and any error text that remains. Compilation on another operating system does not replace this game-session check.
For Workshop publication, use Rain World’s in-game route. This build includes global::RainWorldSteamManager and global::SteamWorkshopUploader, which establish that an in-game route exists. No upload was performed for this page. Valve’s documentation says a new item receives a published file ID, and later updates use that retained identity. Review the exact folder, preview image, title, description, visibility, and tags before submission. Open the item details after the result returns and confirm the displayed metadata and version. Workshop release covers the platform sequence and its account-specific limits.
When a fix changes files, build again, replace the copied package from scratch, repeat the preflight and targeted tests, then update the same item. Keep the final file list or hashes with the release notes so a report identifies the package that players received.
Sources
- Rain World
v1.11.8, Steam build22785462:global::ModManager.LoadModFromJson(global::RainWorld,System.String,System.String),global::ModManager.ModFolderHasDLLContent(System.String),global::RainWorldSteamManager, andglobal::SteamWorkshopUploaderin the assembly identified by Runtime reference. - BepInEx 5 plugin project guide
- BepInEx 5.4.17 plugin attributes
- MSBuild
Referenceitem metadata - Valve Steam Workshop implementation guide
- Workshop release