我在我的應用程序中大量使用依賴注入。因此,我的組件引用接口,具體的實現只有通過XML文件配置的IoC容器是已知的。將程序集部署到bin文件夾而不添加對項目的引用
這個設計的結果是我最終需要在我的bin文件夾中的程序集(例如Newtonsoft.Json,SqlLite),我不需要在我的項目中引用它。事實上,我明確指出不希望引用,因爲我或我的團隊可能會意外地提到具體的實現而不是接口,從而破壞我們正在使用的DI的優勢。
在VS 2010 SP1中引入的_bin_DeployableAssemblies文件夾對於這種情況非常有用,但僅適用於web projects(我個人使用MVC3並確定,但它並不能解決一般問題。或多或少deprecated in VS11 BetaCopying the files into the bin directory prior to build感覺icky - bin文件夾不再是構建工件的容器,我想可以使用一個自定義的post-build事件,但似乎應該有更多的「開箱即用」來解決。這個問題我是堅持了後建什麼其他的方法是有決心解決這個問題
您正在尋找不受依賴關係傷害的世界。如果你想引用抽象類型那麼做。你可以使用像nDepend這樣的靜態分析工具來強制執行。 – Oded 2012-03-22 16:08:32
@Oded,你說的是什麼樣的傷害世界。這怎麼會導致問題? – 2012-09-20 20:55:43
@LandonPoch - 主要部署問題,但是當沒有對具體類的引用時配置IoC容器的後勤方案也會出現(特別是如果您需要強類型配置)。我已經看到上述方法在部署時爆炸,因爲IoC容器找不到配置的具體依賴關係(未被引用的_anywhere_因此未部署)。 – Oded 2012-09-21 08:12:26