| Description |
- Repro: Same Dedicated Server build as https://www.noesisengine.com/bugs/view.php?id=5102. Have a
NoesisView component on a GameObject that must exist on the server for non-UI reasons (e.g. the main camera, which the server keeps for Camera/audio), so the component isn't stripped by build-time scene stripping. Boot the server and load that scene.
- Result:
DllNotFoundException('Noesis') at every scene load on the server (one per match for us), separate from #4's pre-scene throw.
- Diagnosis:
NoesisView.OnEnable runs LoadXaml → … → Noesis.GUI.* which P/Invokes the native library unconditionally, with no native-absent guard. Component-level scene stripping (Unity Multiplayer Roles, etc.) only removes components by type from the consumer's own list — a vendor NoesisView left on a must-survive GameObject reaches the server build and runs its native-touching OnEnable.
- Relation to the family: third instance of the no native-absent guard root cause — runtime, scene-component flavor. Distinct call site from #4.
- Why it's legitimate: same argument as #4 — the plugin is correctly stripped; the component just can't tell and P/Invokes anyway.
- Severity: Medium (non-fatal, but per-match log/Sentry noise on the server).
- Unblocks dropping workaround: we currently gate the native-touching block of
OnEnable behind #if !UNITY_SERVER in the vendored package. The same detect-once/disable policy as #4 (ideally NoesisView early-returns its render path when native is absent) lets us delete that patch too.
|
|---|