通过NuGet包更改Global.asax?

时间:2013-03-01 23:39:26

标签: c# asp.net visual-studio-2012 nuget nuget-package

我正在创建一个NuGet包,并想知道是否有办法修改目标网站的Global.asax?我想在Application_Start中添加一行(如果不存在则创建Global.asax)。这可能吗?更新将如何运作?

1 个答案:

答案 0 :(得分:11)

建议的方法不是修改宿主应用程序的Global.asax文件。相反,您可以使用WebActivator并向项目添加单独的文件。看看Ninject.MVC3 NuGet上的例子。

例如,当您安装NuGet时,您只需将以下文件添加到项目~/App_Start/MyNuGetAppStart.cs

[assembly: WebActivator.PreApplicationStartMethod(typeof(SomeNamespace.AppStart), "Start")]

namespace SomeNamespace
{

    public static class AppStart
    {
        /// <summary>
        /// Will run when the application is starting (same as Application_Start)
        /// </summary>
        public static void Start() 
        {
            ... put your initialization code here
        }
    }
}

这是一种在应用程序启动时添加自定义代码而不是弄乱用户可能已经调整过的Global.asax文件的更加不显眼的方法。