2011-07-08 75 views
2

我想了解一下在.NET的DLL引導一切,如何創建它們,爲什麼要創建這些,他們怎麼可能是有用的等什麼是.net中的Bootstrap DLL?

請指引我

感謝

+0

稍微更多的上下文將有所幫助 –

+0

在我的應用程序中,我想加載一些東西或想在我的dll的其他任何東西之前運行一段代碼。建議僅通過自舉實現。但我完全不知道這一點,任何初學者鏈接引導將是有益的。請注意我不需要這個東西來創建一些安裝包。 –

+1

@MSingh請重新說明問題,以便更清楚地說明預期的內容。 – Incognito

回答

4

我從你的意見,你沒有創建MSI安裝程序看,所以一般你需要一些自定義代碼時加載的程序集運行。 爲此,您可以使用AppDomain.AssemblyLoad事件。

class AssemblyLoadTest { 

    public static void Main() 
    { 
     // subscribe to event 
     AppDomain.CurrentDomain.AssemblyLoad += new         
      AssemblyLoadEventHandler(MyAssemblyLoadEventHandler); 

     // continue working 

    } 

    // will fire once an assembly is loaded 
    static void MyAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args) 
    { 
     // your custom code here 
     // you can check loaded assembly from args.LoadedAssembly.FullName 
     .... 
    } 
} 
+0

是的,這正是我需要的,但問題是我沒有在我的啓動項目中的dll的引用,但從其他dll引用它,像這樣的MainUI有BLL的參考和進一步的BLL有DAL的參考,我想寫DAL的啓動代碼,所以我需要一些appdomain_load事件爲我的BLL。謝謝 –

+0

@MSingh我看到沒有問題,至少你可以識別你的程序集加載到你已經訂閱了該事件的某個AppDomain中,一旦發生事件,你可以通知其他感興趣的人。 – Incognito

0

我認爲這取決於你的架構:

  1. 你可以有不同的Starter.exe這首先運行bootstrup東西,加載後您的應用程序。 (這是美好的事業一次bootstrup東西好後會樹memeory,因爲它使將由OS殺死其他進程的一部分)

  2. 您可以嘗試訂閱AssemblyLoad甚至你的DLL的AppDomain,並試圖在那裏做什麼你要。

+0

Tigran jan,如果我理解正確的問題,單獨的過程會有點棘手,因爲他需要「init」代碼在加載dll時運行,而不是在特定應用程序啓動時運行。應用程序啓動並不意味着該程序集在該應用程序的AppDomain中被加載,因此最好使用AssemblyLoad事件。 – Incognito