我已经依赖于特定组件一些松耦合代码被加载到当前应用程序域:如何强制将特定程序集加载到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支持在特定目录中扫描程序集,这对于这些“拖放”插件要求来说非常合适。 –