BUTR/Bannerlord.BLSE

View on GitHub
src/Bannerlord.BLSE.Loaders.Standalone/NETFrameworkLoader.cs

Summary

Maintainability
A
0 mins
Test Coverage
#if !NETFRAMEWORKHOSTING
using System;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;

namespace Bannerlord.BLSE;

[SuppressMessage("ReSharper", "UnusedVariable")]
public static class NETFrameworkLoader
{
    private delegate void Main(string[] args);

    public static void Launch(string[] args)
    {
        // Catch AccessViolation
        Environment.SetEnvironmentVariable("COMPlus_legacyCorruptedStateExceptionsPolicy", "1");

        NtfsUnblocker.UnblockFile("Bannerlord.BLSE.Shared.dll");
        var sharedAssembly = Assembly.LoadFrom("Bannerlord.BLSE.Shared.dll");
        Trace.Assert(sharedAssembly is not null);
        var sharedMainDelegate = (Main) Delegate.CreateDelegate(typeof(Main), sharedAssembly!.GetType("Bannerlord.BLSE.Shared.Program"), "Main");
        sharedMainDelegate(args);
    }
}
#endif