2011-08-30 72 views
3

我有两个完全独立的Web应用程序,每个使用共享的核心DLL。为了部署和版本控制的目的,我希望能够为两个应用程序部署一个“核心”dll副本。如果需要,我还希望能够支持在部署时替换核心DLL作为选项。换句话说,app1可以使用核心dll版本1,而app2可以使用核心dll版本2.是否有一个DI容器支持通过路径解析单个DLL中的实现类以支持这些功能? IOW,app1会从c:\ corev1 \ core.dll中抓取它的实现类,并且app2会从c:\ corev2 \ core.dll中抓取它的实现类作为一个简单的例子?由于我们的部署策略是所有应用程序都是独立的,因此我需要避免直接引用core.dll。DI使用外部DLL

回答

2

你不需要DI或容器来做到这一点。开箱即用的.NET支持Assembly Versioning

只需为每个应用程序部署core.dll以及其他应用程序二进制文件,并相互独立地进行版本化。

+0

这是一个很好的建议,也适用于我给出的过度简化的场景。 MEF为我解决了这个问题,并允许我避免直接​​引用dll作为问题中的状态。我们的开发流程和我们目前的CI流程需要一些工作,我们最终将朝着这个方向采用简化的方法,但我们现在还不能。 – codeEmitter

3

听起来像你想插拔,不一定(或除了)DI。看看MEF