我在我的应用程序中大量使用依赖注入。因此,我的组件引用接口,具体实现只有我的IoC容器知道,通过XML文件配置。
这种设计的结果是我最终需要我的bin文件夹中的程序集(例如Newtonsoft.Json,SqlLite),我不需要在我的项目中引用它。事实上,我明确地不希望引用,因为我或我的团队可能会意外地引用具体的实现而不是接口,从而破坏了我们正在使用的DI的优势。
VS 2010 SP1中引入的_bin_DeployableAssemblies文件夹对此方案很有用,但仅适用于web projects(我个人使用的是MVC3,并且确实如此,但它无法解决一般问题。但是,它似乎或多或少deprecated in VS11 Beta。Copying the files into the bin directory prior to build感觉很icky - bin文件夹不再是构建工件的容器。我想可以使用自定义的构建后事件,但似乎应该是一个更“开箱即用”的东西来解决这个问题。我是否坚持使用后期构建?还有哪些方法可以解决这个问题?
答案 0 :(得分:6)
有几种方法可以解决这个问题:
我有时会使用第二种选择。这确实具有保持开发人员明显“依赖性”的优点,同时仍然阻止他们实际使用程序集中定义的类型,因为它们不是引用,并且编译器不会将它们视为可用。