How can I use ConstructTexture2D in Console Builds?

I’m trying to create a UTexture2D from a CanvasRenderTarget2D instance which I’ve accomplished via CanvasRenderTarget2D::ConstructTexture2D in editor builds. When building for console, however, that function requires WITH_EDITORONLY_DATA be true because it uses PostEditChange(). So the function returns NULL.

So my question is, how can I make this work in console builds?

Edit: The most I could get working was this terribly performing function (needs to be called every tick ideally):

//Test UTexture2D* URuntimeCanvasRenderTarget2D::ConstructRuntimeTexture2D(UCanvasRenderTarget2D *target) { int Width = 256; int Height = 256;
class UTexture2D* Result = UTexture2D::CreateTransient(
	Width,
	Height,
	PF_B8G8R8A8
	);

FRenderTarget* RenderTarget = target->GameThread_GetRenderTargetResource();

if (RenderTarget == NULL)
{
	return Result;
}

// Lock the texture so it can be modified
uint8* MipData = static_cast<uint8*>(Result->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE));

TArray<FColor> SurfData;
RenderTarget->ReadPixels(SurfData);

// Create base mip.
uint8* DestPtr = NULL;
const FColor* SrcPtr = NULL;
for (int32 y = 0; y<Height; y++)
{
	DestPtr = &MipData[(Height - 1 - y) * Width * sizeof(FColor)];
	SrcPtr = const_cast<FColor*>(&SurfData[(Height - 1 - y) * Width]);
	for (int32 x = 0; x<Width; x++)
	{
		*DestPtr++ = SrcPtr->B;
		*DestPtr++ = SrcPtr->G;
		*DestPtr++ = SrcPtr->R;
		*DestPtr++ = SrcPtr->A;
		SrcPtr++;
	}
}

// Unlock the texture
Result->PlatformData->Mips[0].BulkData.Unlock();
Result->UpdateResource();

return Result;

}