web-dev-qa-db-ja.com

WebActivatorは何をしますか?

このコードは、NuGetを使用してSQL Server CEのエンティティフレームワークコードファーストを追加した後に生成されました。他のファイルは変更されていません。ファイルSQLCEEntityFramework.csが作成され、App_Startフォルダーに配置されました。

これは、自動的に実行されるなどのことですか? NinjectをMVC 3に追加したときにも同じことが起こりました。コードがglobal.ascxファイルに追加されなかったため、プラグアンドプレイか何かを構成する必要があるかわかりません。

[Assembly: WebActivator.PreApplicationStartMethod(typeof(StackTorrents.WebUI.App_Start.SQLCEEntityFramework), "Start")]
47
Shawn Mclean

による:

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

この新しい属性を使用すると、アプリケーションの起動時にコードをASP.NETパイプラインの早い段階で実行できます。 Application_Startの前であっても、私は早い方法を意味します。これは、App_codeフォルダー内のコード(そこにコードがある場合)がコンパイルされる前でもあります。この属性を使用するには、クラスライブラリを作成し、この属性をアセンブリレベルの属性として追加します。これを追加する一般的な場所は、Propertiesフォルダー内のAssemblyInfo.csクラスです。

42
John Farrell

明確にするために、既存のコードファイルを変更せずに、いくつかのアプリケーション開始イベントとアプリケーションシャットダウンイベントにフックする方法を提供します(以前はGlobals.asax.csを編集する必要がありました)。

これらのイベントはHttpモジュールのブートストラップに非常に便利であり、既存のファイルにコードを書き込むことは非常に難しいため、これはほとんどの場合、パッケージを作成するときに大したことです。

19
George Mauer