WebActivator做什么?

这个代码是在为使用NuGet的SQL Server CE添加entity framework代码之后为我生成的。 他们没有改变任何其他文件。 文件SQLCEEntityFramework.cs已创build并放置在App_Start文件夹中。

这是否意味着它会自动执行或什么? 当我为MVC 3添加Ninject时,也发生了同样的事情。没有代码被添加到global.ascx文件,所以我不知道它的即插即用或我必须configuration的东西。

 [assembly: WebActivator.PreApplicationStartMethod(typeof(StackTorrents.WebUI.App_Start.SQLCEEntityFramework), "Start")] 

根据:

http://haacked.com/archive/2010/05/16/three-hidden-extensibility-gems-in-asp-net-4.aspx

这个新的属性允许你在应用程序启动的时候在ASP.NETpipe道中尽早运行代码。 我的意思是尽早,甚至在Application_Start之前。 这也发生在你的App_code文件夹中的代码之前(假设你有任何代码)已被编译。 要使用此属性,请创build一个类库,并将该属性作为程序集级别属性添加。 在Properties文件夹中的AssemblyInfo.cs类中添加这个常见的地方。

为了澄清,它给你一个挂钩到几个应用程序开始和应用程序closures事件的方式,而不必改变任何现有的代码文件(以前你必须编辑Globals.asax.cs)。

这在制作软件包的时候是非常重要的,因为这些事件对于引导Http模块是非常有用的,而且在现有的文件中编写代码确实很困难。