Always getting version missmatches of my modules and plugins in binary build (rocket build)

The last days i have figured out how i can distribute a binary build, other than that mentioned as rocket build, so that the artists in my team can work without having all the stuff they don’t need to work. So i got the source from github, navigate to Engine/Build/BatchFiles, opened the command window there and run the following command:

RunUAT.bat BuildGraph -target=”Make Installed Build Win64” -script=Engine/Build/InstalledEngineBuild.xml -set:WithMac=false -set:WithAndroid=false -set:WithIOS=false -set:WithTVOS=false -set:WithLinux=false -set:WithHTML5=false -set:WithSwitch=false -WithDCC=false

Then i went to bed because this procedure takes some time, no big deal. It runs through and in the end i got the working RocketBuild in the LocalBuilds folder, very good…

As i’m using a c++ module (its a c++ project) and a couple of custom c++ plugins, which are also part of our .uproject file, i get the typicall “Mission Modules” message when trying to open the .uproject file like i would just update the engine version.

So far so good, i hit “Yes” (or i just open the .sln file and compile it withing visual studio). It compiles smoothly and everything seems to work. However, apparently the compiled module and plugin dlls based on this binary build is not compatible with this binary build itself, as it keep saying “Missing Modules” (or “Try rebuilding from source manually” when i hit “Yes” in the dialog) which is… uh… what?

Alright, i started to dive a little bit into the whole system, but without the ultimative success. I find out that there is a BuildId in the file UE4Editor.modules within the Binaries/Win64 folder (in the engine itself and in my project), it is being used to identify whether the modules/plugins are compiled based on an specific engine version.
Funnily enough the both build ids (engine and my project) are always different, even after using Clean, Rebuild, deleting UE4Editor.modules, switching to another engine and back, deleting Intermediate folder of my project and recreating project files (this only triggers the build id change into another random guid, but not the one from the binary build of the engine).

I tested out to just put the BuildId from the engines UE4Editor.module into the UE4Editor.module file of our project and… guess what… it works! Problem solved! … Until i need to change c++ stuff in my project and need to build, i have to go through all the plugins and put in this buildid from the engine, as the build process will “break” the buildid again. For now, it’s okay to have this workaround in place, it’s not so difficult to write a tool which will automatically repair the buildid after building, but it’s kindy dirty and unintuitive.

So one thing to mention: I just created an empty c++ project with this binary build of the engine and in this case, it works directly (but there is an empty buildId in the UE4Editor.modules).

What do i missunderstand here? I expect i just need to compile the dlls of my project and then i can start the engine. Why is this not the case? Is something wrong in my project? If yes, why is it working with the launcher version of the engine since 6-8 versions (i can’t remember)?

This should be fixed by CL#3326996 (https://github.com/EpicGames/UnrealEngine/commit/1f4d3b0de96527316acce49befd06b60e1364cd4)

There was a problem with some code that tries to set the BuildID to that of the engine, which was failing out when it couldn’t find the main .response file in an internal list (only contains those from the project in an installed build).