我们可以在 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.
我们可以在 .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.