Module .dlls for hotreload do not get created

Hey there,

we are trying to work with modules. We are working on several small projects, but have code that is usefull for multiple projects. Thus we created a project which only reason to exist is to be a container for modules. This project seems to work as expected. Changes to the code will hotreload. For every module .dll the engine creates a hotreload file.

To make use of the modules within other projects, we use perforce to map in the modules. Every project that makes use of those modules, compiles them for itself. This way, every programmer is able to make changes to the module source files from every project. The module files get compiled with every project separately. This works as long as the editor is closed, cause the editor uses the normal .dll files on first boot. However, compiling while the editor is open, the hotreload files do not get created for the module .dlls. Thus the hotreload fails.

When compiling and the editor is open, unreal creates the file …/Game/Binaries/Win64/UE4Editor.modules. Here is how it looks:

{
	"Changelist" : 3450819,
	"CompatibleChangelist" : 3299760,
	"BuildId" : "1ddcddb2-7ec6-4aa9-8a33-fc32d2a526e5",
	"Modules" : 
	{
		"VaseGenerator" : "UE4Editor-VaseGenerator-6436.dll",
		"LogUtility" : "UE4Editor-LogUtility-5875.dll",
		"ImportExport" : "UE4Editor-ImportExport-5875.dll",
		"DebugHelper" : "UE4Editor-DebugHelper-5875.dll",
		"MathExtension" : "UE4Editor-MathExtension-5875.dll",
		"UtilityFunctions" : "UE4Editor-UtilityFunctions-5875.dll"
	}
}

The module hotreload files are correctly listed, but are not created.

Here the Output log:

LogHotReload: New module detected: UE4Editor-VaseGenerator-4478.dll
LogHotReload: Starting Hot-Reload from IDE
LogSlate: Took 0.000120 seconds to synchronously load lazily loaded font '../../../Engine/Content/Slate/Fonts/Roboto-Light.ttf' (159K)
LogModuleManager:Warning: ModuleManager: Unable to load module 'C:/Users/vr3/Documents/Unreal Projects/GueWorkProj/PerforceWorkspace/GuenniVaseGenerator/VaseGenerator/Binaries/Win64/UE4Editor-VaseGenerator-4478.dll' because the file couldn't be loaded by the OS.
Warning: HotReload failed, reload failed /Script/VaseGenerator.

And the target.cs files:

using UnrealBuildTool;
 using System.Collections.Generic;

public class VaseGeneratorEditorTarget : TargetRules
{
	public VaseGeneratorEditorTarget(TargetInfo Target)
	{
		Type = TargetType.Editor;
	}

	//
	// TargetRules interface.
	//

	public override void SetupBinaries(
		TargetInfo Target,
		ref List<UEBuildBinaryConfiguration> OutBuildBinaryConfigurations,
		ref List<string> OutExtraModuleNames
		)
	{
		OutExtraModuleNames.AddRange( new string[] { "VaseGenerator", "LogUtility", "ImportExport", "DebugHelper", "MathExtension" });
        OutExtraModuleNames.AddRange( new string[] { "UtilityFunctions" });
	}
}

Thanks for your reply Steve.

The module that is found is VaseGenerator, that is the PRIMARY_GAME module, it gets compiled and the hotreload file is created, the engine found it, as listed in the log.

The submodules are missing, hot reload .dll not getting created

         "LogUtility" : "UE4Editor-LogUtility-5875.dll",
         "ImportExport" : "UE4Editor-ImportExport-5875.dll",
         "DebugHelper" : "UE4Editor-DebugHelper-5875.dll",
         "MathExtension" : "UE4Editor-MathExtension-5875.dll",
         "UtilityFunctions" : "UE4Editor-UtilityFunctions-5875.dll"

Hi Steve,

sorry for the late reply, had some issues updating to UE4.16.

I have the latest update, UE4.16.2. The issue with the number suffix seems to be fixed. Unfortunately it did not solve the issue of hotreload .dlls not getting created.

Trying to track the issue further down, but large rocks seem to block the way.

I noticed from another project with working hotreload, that not all MODULENAME_X.dll need to exist for hotreload to succeed. Just modules with changes to it must be created as hotreload files.

Compiling from Visual Studio does not show any error, but hotreload fails. Compiling from Editor directly afterwards, does not show any error as well, but code is still not updated.

Restarting the Editor, making changes to C++ and compiling from Editor, gives the following Error: CompilerResultsLog:Error: Error LINK : fatal error LNK1181: Eingabedatei "C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RamaSaveSystem\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-RamaSaveSystem-2020.lib" kann nicht ge?ffnet werden.

This is about the RamaSaveSystem plugin from the Marketplace which is used within the project. The error says the file can’t be opened. For sure it can’t as it is not there, this file does not exist.

I made a new project and tried to reproduce this error by enabling the plugin. Unfortunately it does NOT reproduce the error, hotreload is working.

Why is the Project looking for a hotreload file of a marketplace plugin?

EDIT: Tried to reinstall the RamaSaveSystem plugin, but did not solve it. Somehow I managed to get the HotReload working for a single try, in this case hotreload.dlls for all modules got created. A small change in the code and it failed again.

Where is the verbose log written to? The editor log does not seem to list more than usual.

Compiling from Visual Studio, Visual Studio Log

    1>------ Build started: Project: UE4, Configuration: BuiltWithUnrealBuildTool Win32 ------
    2>------ Build started: Project: VaseGenerator, Configuration: Development_Editor x64 ------
    2>C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\Midi\Midi.Build.cs : warning : Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
    2>C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\MidiAsset\MidiAsset.Build.cs : warning : Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
    2>C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\MidiAssetEditor\MidiAssetEditor.Build.cs : warning : Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
    2>C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\MidiInterface\MidiInterface.Build.cs : warning : Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
    2>C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\ProceduralAudio\ProceduralAudio.Build.cs : warning : Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
    2>C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RamaSaveSystem\Source\RamaSaveSystem\RamaSaveSystem.Build.cs : warning : Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
    2>C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RuntimeMeshComponent\Source\RuntimeMeshComponent\RuntimeMeshComponent.Build.cs : warning : Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
    2>C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RuntimeMeshComponent\Source\RuntimeMeshComponentEditor\RuntimeMeshComponentEditor.Build.cs : warning : Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
    2>C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RuntimeMeshComponent\Source\RuntimeMeshComponentSlicer\RuntimeMeshComponentSlicer.Build.cs : warning : Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
    2>  Compiling game modules for hot reload
    2>  Performing 9 actions (4 in parallel)
    2>  [2/9] Link UE4Editor-LogUtility-5316.lib
    2>  [4/9] Link UE4Editor-ImportExport-5316.lib
    2>  [3/9] Link UE4Editor-VlcMedia-522.lib
    2>     Creating library C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-LogUtility-5316.lib and object C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-LogUtility-5316.exp
    2>     Creating library C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-ImportExport-5316.lib and object C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-ImportExport-5316.exp
    2>     Creating library C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Plugins\VlcMedia-master\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VlcMedia-522.lib and object C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Plugins\VlcMedia-master\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VlcMedia-522.exp
    2>  Outline.cpp
    2>  [5/9] Link UE4Editor-DebugHelper-5316.lib
    2>  [6/9] Link UE4Editor-UtilityFunctions-5316.lib
    2>  [7/9] Link UE4Editor-MathExtension-5316.lib
    2>     Creating library C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UtilityFunctions-5316.lib and object C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UtilityFunctions-5316.exp
    2>     Creating library C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-DebugHelper-5316.lib and object C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-DebugHelper-5316.exp
    2>     Creating library C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MathExtension-5316.lib and object C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MathExtension-5316.exp
    2>  [8/9] Link UE4Editor-VaseGenerator-5316.dll
    2>  [9/9] Link UE4Editor-VaseGenerator-5316.lib
    2>     Creating library C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VaseGenerator-5316.lib and object C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VaseGenerator-5316.exp
    2>     Creating library C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VaseGenerator-5316.suppressed.lib and object C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VaseGenerator-5316.suppressed.exp
    2>  Deploying VaseGeneratorEditor Win64 Development...
    2>  Total build time: 108,88 seconds (Local executor: 104,90 seconds)
    ========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Build from Visual Studio Editor Log:

LogHotReload: New module detected: UE4Editor-VaseGenerator-5316.dll
LogHotReload: Starting Hot-Reload from IDE
LogSlate: Took 0.000182 seconds to synchronously load lazily loaded font '../../../Engine/Content/Slate/Fonts/Roboto-Light.ttf' (159K)
LogModuleManager:Warning: ModuleManager: Unable to load module 'C:/Users/vr3/Documents/Unreal Projects/GueWorkProj/PerforceWorkspace/GuenniVaseGeneratorDev/VaseGenerator/Binaries/Win64/UE4Editor-VaseGenerator-5316.dll' because the file couldn't be loaded by the OS.
Warning: HotReload failed, reload failed /Script/VaseGenerator.
LogContentBrowser: Native class hierarchy populated in 0.0504 seconds. Added 2352 classes and 522 folders.
Display: HotReload took  0.2s.

Build from Editor, Editor Log:

Candidate modules for hot reload:
  RamaSaveSystem
  VaseGenerator
  DebugHelper
  MathExtension
  UtilityFunctions
  ImportExport
  LogUtility
Launching UnrealBuildTool... [C:/Program Files/Epic Games/UE_4.16/Engine/Binaries/DotNET/UnrealBuildTool.exe VaseGenerator -ModuleWithSuffix RamaSaveSystem 8612 -ModuleWithSuffix VaseGenerator 8390 -ModuleWithSuffix DebugHelper 657 -ModuleWithSuffix MathExtension 2572 -ModuleWithSuffix UtilityFunctions 4986 -ModuleWithSuffix ImportExport 9506 -ModuleWithSuff
ix LogUtility 7249 Win64 Development -editorrecompile -canskiplink -nosharedpch "C:/Users/vr3/Documents/Unreal Projects/GueWorkProj/PerforceWorkspace/GuenniVaseGeneratorDev/VaseGenerator/VaseGenerator.uproject" ]
Warning: Starting HotReload took  0.4s.
CompilerResultsLog: New page: Compilation - Aug 4, 2017, 10:23:59 PM
CompilerResultsLog: Info C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\Midi\Midi.Build.cs: warning: Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
CompilerResultsLog: Info C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\MidiAsset\MidiAsset.Build.cs: warning: Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
CompilerResultsLog: Info C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\MidiAssetEditor\MidiAssetEditor.Build.cs: warning: Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
CompilerResultsLog: Info C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\MidiInterface\MidiInterface.Build.cs: warning: Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
CompilerResultsLog: Info C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\MidiAsset\Source\ProceduralAudio\ProceduralAudio.Build.cs: warning: Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
CompilerResultsLog: Info C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RamaSaveSystem\Source\RamaSaveSystem\RamaSaveSystem.Build.cs: warning: Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the method signature.
CompilerResultsLog: Info C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RuntimeMeshComponent\Source\RuntimeMeshComponent\RuntimeMeshComponent.Build.cs: warning: Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please update the metho
d signature.
CompilerResultsLog: Info C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RuntimeMeshComponent\Source\RuntimeMeshComponentEditor\RuntimeMeshComponentEditor.Build.cs: warning: Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please upda
te the method signature.
CompilerResultsLog: Info C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RuntimeMeshComponent\Source\RuntimeMeshComponentSlicer\RuntimeMeshComponentSlicer.Build.cs: warning: Module constructors should take a ReadOnlyTargetRules argument (rather than a TargetInfo argument) and pass it to the base class constructor from 4.15 onwards. Please upda
te the method signature.
CompilerResultsLog: Info Compiling game modules for hot reload
CompilerResultsLog: Info Performing 8 actions (4 in parallel)
CompilerResultsLog: Info [2/8] Link UE4Editor-LogUtility-7249.lib
CompilerResultsLog: Info [3/8] Link UE4Editor-ImportExport-9506.lib
CompilerResultsLog: Info [4/8] Link UE4Editor-DebugHelper-657.lib
CompilerResultsLog: Info    Bibliothek "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-LogUtility-7249.lib" und Objekt "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build
\Win64\UE4Editor\Development\UE4Editor-LogUtility-7249.exp" werden erstellt.
CompilerResultsLog: Info    Bibliothek "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-ImportExport-9506.lib" und Objekt "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Bui
ld\Win64\UE4Editor\Development\UE4Editor-ImportExport-9506.exp" werden erstellt.
CompilerResultsLog: Info    Bibliothek "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-DebugHelper-657.lib" und Objekt "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build
\Win64\UE4Editor\Development\UE4Editor-DebugHelper-657.exp" werden erstellt.
CompilerResultsLog: Info [5/8] Link UE4Editor-UtilityFunctions-4986.lib
CompilerResultsLog: Info [6/8] Link UE4Editor-MathExtension-2572.lib
CompilerResultsLog: Info    Bibliothek "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UtilityFunctions-4986.lib" und Objekt "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate
\Build\Win64\UE4Editor\Development\UE4Editor-UtilityFunctions-4986.exp" werden erstellt.
CompilerResultsLog: Info    Bibliothek "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MathExtension-2572.lib" und Objekt "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Bu
ild\Win64\UE4Editor\Development\UE4Editor-MathExtension-2572.exp" werden erstellt.
CompilerResultsLog: Info Outline.cpp
CompilerResultsLog: Info [7/8] Link UE4Editor-VaseGenerator-8390.dll
CompilerResultsLog: Info [8/8] Link UE4Editor-VaseGenerator-8390.lib
CompilerResultsLog:Error: Error LINK : fatal error LNK1181: Eingabedatei "C:\Program Files\Epic Games\UE_4.16\Engine\Plugins\Marketplace\RamaSaveSystem\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-RamaSaveSystem-8612.lib" kann nicht ge?ffnet werden.
CompilerResultsLog: Info    Bibliothek "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VaseGenerator-8390.lib" und Objekt "C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Intermediate\Bu
ild\Win64\UE4Editor\Development\UE4Editor-VaseGenerator-8390.exp" werden erstellt.
CompilerResultsLog: Info ERROR: UBT ERROR: Failed to produce item: C:\Users\vr3\Documents\Unreal Projects\GueWorkProj\PerforceWorkspace\GuenniVaseGeneratorDev\VaseGenerator\Binaries\Win64\UE4Editor-VaseGenerator-8390.dll
CompilerResultsLog: Info Total build time: 6,97 seconds (Local executor: 0,00 seconds)
LogMainFrame: MainFrame: Module compiling took 7.260 seconds
Warning: HotReload failed, recompile failed

The interesting part is: Candidate modules for hot reload: RamaSaveSystem

Why is it listet?

Here the Target.build.cs

using UnrealBuildTool;
using System.Collections.Generic;

public class VaseGeneratorEditorTarget : TargetRules
{
    public VaseGeneratorEditorTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Editor;
        ExtraModuleNames.AddRange(new string[] { "VaseGenerator", "LogUtility", "ImportExport", "DebugHelper", "MathExtension" });
        ExtraModuleNames.AddRange(new string[] { "UtilityFunctions" });
    }
}

Thanks for your time Steve. Posted the log as answer to the question, as it grew to big.

Hi,

It’s strange that your log lists that it found a new module on the drive (‘New module detected’) but then it’s not there when you try to load it (‘Unable to load module… because the file couldn’t be loaded by the OS’).

If you have access to source, try opening HotReload.cpp and searching for the line that contains “New module detected: %s”, and change it to this:

UE_LOG(LogHotReload, Log, TEXT("New module detected: %s"), *Change.Filename);

(note that it’s now *Change.Filename instead of just *Filename)

This will print out the full path of the found module rather than just the name, and should tell you if the detected changed DLL is the same as the one it’s trying to load.

Steve

Oh, I’ve just noticed that the VaseGenerator module has a different suffix: 6436 vs 5875. If it’s what I think it is, it should be fixed in the 4.16.2 release.

Sorry for the trouble,

Steve

I don’t think it should be trying to build or link to a hot reloaded marketplace plugin.

Could you try enabling verbose logging on UBT and posting your logs of a failed hot reload? You need to change the LogLevel to Verbose in your BuildConfiguration.xml file.

https://docs.unrealengine.com/latest/INT/Programming/UnrealBuildSystem/Configuration/

Steve