I also struggled with the Linker error you mentioned:
The solution that works for me is to change the LoadingPhase
of the ModelViewViewModelBlueprint
module from Default
to PreDefault
. This can be done in the ModelViewViewModel.uplugin
file found in the engine folder: UE_5.4\Engine\Plugins\Runtime\ModelViewViewModel\
I found the solution in a thread about the CommonUI: Common UI's loading phase breaks assets - #2 by ElThundercloud
Edit: I need to correct myself: the solution I explained above only worked partially. The linker error was gone and the widget remembered the viewmodel I assigned to it. But the editor crashed on startup whenever I bound a property to a view.
My Gamemode tried to get a reference to the MVVMSubsystem for the creation of its class default object. It turned out to be the exact same issue as described here. That gamemode class created a reference in its ctor using FClassFinder to get my BP_PlayerController. I removed that reference in the c++ class. Created a new blueprint deriving from that c++ class, and set the reference there.
In the end, everything was layed out in front of me. It was just a pain to combine all the pieces correctly. Especially, because this Gamemode was not even used in my current map. Loading Debug symbols and setting a breakpoint in FLinkerLoad::VerifyImportInner
line 3489 where the UE_ASSER_LOG
reports this Linker Error provided me the decisive clue.
Big thanks at Chonker5.