mirror of
https://github.com/Smaug123/unofficial-nunit-runner
synced 2025-10-05 01:18:39 +00:00
36 lines
1.1 KiB
C#
36 lines
1.1 KiB
C#
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Runtime.Loader;
|
|
using WoofWare.NUnitTestRunner.StartupHook;
|
|
|
|
namespace WoofWare.NUnitTestRunner.StartupHook
|
|
{
|
|
internal class StartupAssemblyLoadContext : AssemblyLoadContext
|
|
{
|
|
private readonly AssemblyDependencyResolver _resolver;
|
|
|
|
public StartupAssemblyLoadContext()
|
|
{
|
|
_resolver = new AssemblyDependencyResolver(Assembly.GetExecutingAssembly().Location);
|
|
}
|
|
|
|
protected override Assembly Load(AssemblyName assemblyName)
|
|
{
|
|
var assemblyPath = _resolver.ResolveAssemblyToPath(assemblyName);
|
|
|
|
return assemblyPath != null ? LoadFromAssemblyPath(assemblyPath) : null;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Must be internal and called `StartupHook`
|
|
internal class StartupHook
|
|
{
|
|
public static void Initialize()
|
|
{
|
|
var loadContext = new StartupAssemblyLoadContext();
|
|
var assembly = loadContext.LoadFromAssemblyName(new AssemblyName("WoofWare.NUnitTestRunner.StartupHookLogic"));
|
|
assembly.DefinedTypes.First(x => x.Name == "StartupHookLogic").GetDeclaredMethod("DoIt")!.Invoke(null, null);
|
|
}
|
|
}
|