我们可以在 DotNet class 库项目中使用 global.asax 文件吗

Can we use global.asax file in DotNet class library projects

我们可以在 .NET Class 库项目中使用 Global.asax 文件吗?因为我没有在任何地方看到 Global.asax 文件只能用于基于 Web 的应用程序。

Global.asax 文件的代码在应用程序启动时被 .net 框架编译和调用。我想对我的 class 库使用类似的功能,即当我的 class 库被加载到内存中时 Application_Start of Global.asax file of class库将被调用。

我知道这可以使用静态构造函数来使用,但我想为此使用 Global.asax

任何 suggestions/comments 将不胜感激..

谢谢

global.asax 文件是 ASP.NET 应用程序的一个功能。它在 DLL(class 库项目)中不可用。

运行没有标准方法(使用 C#)在程序集加载时使用某些代码,即使 CLR 似乎具有这样的功能。查看 this question for some more information and ideas. For example, one answer mentions a tool called InjectModuleInitializer,这是 运行 作为 post 构建步骤,将模块初始化方法注入 .NET 程序集。

以下是 blog post introducing InjectModuleInitializer 的简短摘录:

One feature of the CLR that is not available in C# or VB.NET are module initializers (or module constructors). A module initializer is simply a global function which is named .cctor and marked with the attributes SpecialName and RTSpecialName. It is run when a module (each .NET assembly is comprised of one or more modules, typically just one) is loaded for the first time, and is guaranteed to run before any other code in the module runs, before any type initializers, static constructors or any other initialization code.