2013-03-01 13 views
7

Ich bin ein NuGet Paket erstellt und frage mich, ob es einen Weg gibt ist die Global.asax der Ziel-Website zu ändern? Ich möchte eine Zeile im Application_Start hinzufügen (und das Global.asax erstellen, wenn es nicht dort ist). Ist das möglich? Wie funktionieren Updates?Global.asax über NuGet-Paket ändern?

Antwort

11

Der empfohlene Ansatz ist nicht, die Datei Global.asax der Host-Anwendung zu ändern. Stattdessen könnten Sie WebActivator verwenden und dem Projekt eine separate Datei hinzufügen. Werfen Sie einen Blick auf zum Beispiel die Ninject.MVC3 NuGet, die genau das tut.

Zum Beispiel, wenn yo installiert Ihr NuGet Sie einfach die folgende Datei in das Projekt könntest ~/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 
     } 
    } 
} 

Dies ist eine weitaus unaufdringliche Weise benutzerdefinierten Code beim Start der Anwendung hinzufügen, anstatt mit dem Global Messing .asax-Datei, die der Benutzer möglicherweise bereits optimiert hat.