在 .NET 中,有一些东西可以在加载程序集时自动运行引用程序集中的一段代码。
例如,您可以有一个用某种属性装饰的类,该属性位于项目 Foo(A 类库)中。而项目 Bar(A Web App) 只是引用项目 Foo。当 Bar 加载时,Foo 中的装饰代码会以某种方式运行。我相信这是一个较新的功能。
谁能告诉这个功能叫什么??
更新:谢谢湿婆!不是模块初始化。虽然它引导我找到正确的答案。PreApplicationStartMethod 并且在 .NET 中受支持!谢谢大家!!
在 .NET 中,有一些东西可以在加载程序集时自动运行引用程序集中的一段代码。
例如,您可以有一个用某种属性装饰的类,该属性位于项目 Foo(A 类库)中。而项目 Bar(A Web App) 只是引用项目 Foo。当 Bar 加载时,Foo 中的装饰代码会以某种方式运行。我相信这是一个较新的功能。
谁能告诉这个功能叫什么??
更新:谢谢湿婆!不是模块初始化。虽然它引导我找到正确的答案。PreApplicationStartMethod 并且在 .NET 中受支持!谢谢大家!!
原来我正在寻找PreApplicationStartMethod!谢谢大家!
碰巧,您是指模块初始化程序吗?它们能够完成您描述的事情,但似乎 C# 不支持它们。它们是 CLR 的一部分,是的,但不是 C# 语言本身的一部分。
一些与进一步信息和研究的链接:
http://blogs.msdn.com/b/junfeng/archive/2005/11/19/494914.aspx
.Net:加载程序集时运行代码- 感谢J...指出此链接
您可能还看过Fody。Fody 是“用于编织 .net 程序集的可扩展工具”,您可以将其安装为 nuget 包。fody 有一个名为Module Initializers的插件。在其他答案中已经提到了module initializers ,它在引擎盖下使用了,但消除了填充。
从文档中:
它的作用:在目标程序集中查找一个类,以ModuleInitializer
下列形式命名:
public static class ModuleInitializer
{
public static void Initialize()
{
//Init code
}
}
然后它将以下代码注入目标程序集的模块初始化程序。当程序集加载到内存中时将调用此代码
static <Module>()
{
ModuleInitializer.Initialize();
}
如果没有错,那么您正在寻找“模块初始化程序”。看看这个_
您在寻找模块初始化器吗?