将程序集部署到bin文件夹而不添加对项目的引用

时间:2012-03-22 16:04:30

标签: .net build

我在我的应用程序中大量使用依赖注入。因此,我的组件引用接口,具体实现只有我的IoC容器知道,通过XML文件配置。

这种设计的结果是我最终需要我的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文件夹不再是构建工件的容器。我想可以使用自定义的构建后事件,但似乎应该是一个更“开箱即用”的东西来解决这个问题。我是否坚持使用后期构建?还有哪些方法可以解决这个问题?

1 个答案:

答案 0 :(得分:6)

有几种方法可以解决这个问题:

  1. 将文件复制到bin文件夹的构建后事件将处理此问题。
  2. 在项目中包含文件作为内容项,但不作为参考。可以将它们设置为复制到build上的输出文件夹。
  3. 我有时会使用第二种选择。这确实具有保持开发人员明显“依赖性”的优点,同时仍然阻止他们实际使用程序集中定义的类型,因为它们不是引用,并且编译器不会将它们视为可用。