public override void UpdateReferences(BuildingContext context)
{
var isDll = context.Assembly.NtHeaders.FileHeader.Characteristics.HasFlag(ImageCharacteristics.Dll);
var mscoreeModule = context.Assembly.ImportDirectory.ModuleImports.First(x => x.Name == "mscoree.dll");
var corMainImport = mscoreeModule.SymbolImports.First(
x => x.HintName != null && x.HintName.Name == (isDll ? "_CorDllMain" : "_CorExeMain"));
var address = corMainImport.GetTargetAddress(true);
context.Assembly.NtHeaders.OptionalHeader.AddressOfEntrypoint =
(uint)context.Assembly.FileOffsetToRva(StartOffset);
_addressSegment.Data = BitConverter.GetBytes((uint)(address | context.Assembly.NtHeaders.OptionalHeader.ImageBase));
base.UpdateReferences(context);
}