Understand the Shared Runtime Structure
masterNetBeauty 2 supports a shared runtime architecture that allows multiple applications to share common managed assemblies and satellite assemblies (locales) to save space.
In this structure:
- A central
librariesdirectory (name is customizable) holds shared managed DLLs and locales. - Locales are organized by language (e.g.,
en,zh-Hans) and use MD5-based subdirectories to allow multiple versions of the same resource files to coexist between different apps. - Native DLLs (
srm_native) are not shared and must remain within each individual application's folder. - Each application maintains its own main folder containing its specific
.deps.json,.dll, and.runtimeconfig.jsonfiles.
├── libraries # Shared runtime DLLs (customizable name)
│ ├── locales # Satellite assemblies
│ │ ├── en
│ │ │ └── *.resources.dll
│ │ │ ├── MD5_1 # Allows multiple runtimes between apps
│ │ │ │ └── *.resources.dll
│ │ │ └── MD5_2
│ │ │ └── *.resources.dll
│ │ └── ...
│ ├── *.dll # Shared managed assemblies
│ │ ├── MD5_1
│ │ │ └── *.dll
│ │ └── MD5_2
│ │ └── *.dll
│ └── srm_native # Native DLLs (not shared; each app has its own copy)
│ ├── APPID_1
│ │ └── *.dll
│ └── APPID_2
│ └── *.dll
├── app1 # Main folder for app1
│ ├── hostfxr.dll ...
│ ├── libloader.dll # Loader (moved if using patch)
│ ├── app1.deps.json
│ ├── app1.dll
│ ├── app1.exe
│ ├── app1.runtimeconfig.json
│ └── ...
└── app2 # Main folder for app2
├── hostfxr.dll ...
├── libloader.dll
├── app2.deps.json
├── app2.dll
├── app2.exe
├── app2.runtimeconfig.json
└── ...