我已經依賴於特定組件一些鬆耦合代碼被加載到當前應用程序域:如何強制將特定程序集加載到MVC 2應用程序的每個應用程序域中?
Assembly assembly = AppDomain.CurrentDomain.GetAssemblies().Where(
candidateAssembly => candidateAssembly.FullName.StartsWith("Microsoft.WindowsAzure.ServiceRuntime")).SingleOrDefault();
和代碼的MVC 2應用程序和產量內部執行null
參考,因爲組件沒有加載到當前的應用程序域。我只能從該程序集中調用一些代碼,但這會在該程序集中引入應用程序代碼的強烈依賴性,並且我不再有鬆耦合。
我需要強制IIS(或任何其他)在我的代碼運行之前將該程序集加載到應用程序域中。我試圖編寫一個IHttpModule
的實現並將其列在web.config中,但它沒有幫助。
到目前爲止,我試圖在<system.web><compilation><assemblies>
下添加程序集,看起來像是有效,但我不確定它是否可靠。
如何強制將特定程序集加載到應用程序域中而不在代碼中引入相關性?
如果您知道它的名稱,Assembly.load應該加載程序集。 MEF也有查找和加載程序集的方法AFAIK –
@Simon Halsey:再一次,這是一個很難的依賴,我想要一些不需要更改代碼的東西。 – sharptooth
在這種情況下,我也會依賴依賴注入工具。例如,StructureMap支持在特定目錄中掃描程序集,這對於這些「拖放」插件要求來說非常合適。 –