2011-08-30 65 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