【发布时间】:2021-06-27 18:32:08
【问题描述】:
我尝试在 .net5 代码中使用 [ModuleInitializer]。我的测试程序集
namespace TestAssembly
{
public class Class1
{
[ModuleInitializer]
public static void Init()
{
Console.WriteLine("ModuleInitializer");
}
}
}
我需要在程序集加载时调用 Init() 方法。加载代码
byte[] rawAssembly = LoadFile("TestAssembly.dll");
Assembly.Load(rawAssembly);
但在加载时不会调用初始化程序。我也试过了
Assembly.LoadFrom("TestAssembly.dll");
Assembly.LoadFile("TestAssembly.dll");
AppDomain domain = AppDomain.CurrentDomain;
Assembly assembly = domain.Load(rawAssembly);
初始化器在之后调用
var t = Type.GetType("TestAssembly.Class1, TestAssembly", AssemblyResolver, TypeResolver, false, true);
var obj = Activator.CreateInstance(t);
即在第一次使用程序集中的任何类型时。 这是正常行为吗?我可以在程序集加载时调用初始化程序而不需要任何额外的代码吗?
【问题讨论】:
标签: c# clr clr-module-initializer