C#有没有一种方法可以验证加载的程序集?

时间:2020-05-13 11:13:58

标签: c# .net load .net-assembly

.NET中是否有一种方法可以验证加载的程序集,并在需要时阻止对其进行加载?

我试图使用AsseblyLoad事件,但是根据this,它似乎正在吞噬异常:

static void Main(string[] args)
{
    AppDomain.CurrentDomain.AssemblyLoad += OnAssemblyLoaded;
    var asm = Assembly.LoadFrom(@"path\to\assembly.dll");

    Console.WriteLine($"loaded {asm.GetName().Name}");            
    Console.ReadKey();
}

private static void OnAssemblyLoaded(object sender, AssemblyLoadEventArgs args)
{
    // DO CHECKs here            
    throw new Exception("invalid assebly");
}

在实际项目中,由于许可规则,我想验证发布者。我没有在加载程序集之前可以放置自定义验证代码的地方。

1 个答案:

答案 0 :(得分:0)

您可以使用“仅反射”加载,以允许您在正确加载之前通过反射访问部件以进行验证。

https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.reflectiononlyload?view=netframework-4.8