有没有办法在程序集加载时运行代码?

时间:2011-03-28 11:45:37

标签: reflection .net-4.0 appdomain

我正在构建一个应用程序,它将加载不受信任的程序集以进行检查(即检索程序集的全名)。出于安全原因,我试图想出一种方法,可以编写这些程序集,以便在加载时执行代码。我还没有用方法编写代码,但是想把它扔出去看看是否有人可以。

我知道我可以将这些程序集加载到一个不受信任的应用程序域中,有效地阻止他们做任何事情,但我想避免复杂性,如果它不需要。

具体来说,我将调用Assembly.Load<LoadedAssebmly>.FullName。也许有更好的方法来加载程序集名称而不使用Assembly类?

谢谢, 马特

2 个答案:

答案 0 :(得分:1)

首先,有AssemblyName类。它允许您在不加载程序集的情况下查找程序集的名称。其次,您可以使用Assembly.ReflectionOnlyLoad加载程序集,{{1}}使用仅反射上下文 - 不能从这样的程序集执行代码。

答案 1 :(得分:1)

是的,有可能:.Net: Running code when assembly is loaded

我建议你使用一种方法来检查装配,但不加载它,即Mono.Cecil