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

标签 .net build

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

这种设计的结果是我最终需要我的 bin 文件夹中的程序集(例如 Newtonsoft.Json、SqlLite),我不需要在我的项目中引用这些程序集。事实上,我明确不想要引用,因为我或我的团队可能会不小心引用具体实现而不是接口(interface),从而破坏我们正在使用的 DI 的优势。

VS 2010 SP1 中引入的 _bin_DeployableAssemblies 文件夹对这种情况很有用,但仅适用于 web projects (我个人使用 MVC3 并且可以接受,但它并没有解决一般问题。但是,它似乎或多或少是 deprecated in VS11 BetaCopying the files into the bin directory prior to build 感觉很恶心 - bin 文件夹不再是用于构建工件。我想可以使用自定义构建后事件,但似乎应该有更多“开箱即用”的东西来解决这个问题。我坚持构建后吗?还有什么其他方法可以解决这个问题问题?

最佳答案

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

  1. 将文件复制到 bin 文件夹的构建后事件将处理此问题。
  2. 将文件作为内容项包含在项目中,但不作为引用。它们可以设置为在构建时复制到输出文件夹。

我有时会使用第二个选项。这样做的好处是让“依赖性”对开发人员来说显而易见,同时仍然阻止他们实际使用程序集中定义的类型,因为它们不是引用,编译器不会将它们视为可用。

关于.net - 将程序集部署到 bin 文件夹而不添加对项目的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826104/

相关文章:

build - 在Mac OS X Lion(10.7)上使用XCode 4.1和iOS 4.3生成问题

.net - 如何识别 DLL 是 Debug 还是 Release 构建(在 .NET 中)

C# WinForms DataGridView - 选定常量行!

c# - 从蛋糕脚本中将警告消息记录在文本文件中

c# - 在 Windows 7 上运行 LibVLC.NET 示例

.net - 使用 linq 获取整数范围

asp.net - asp.net中Literal控件的Mode属性

php - 在 Git Workflow 中生成 API 文档

deployment - Powerbuilder 中的完整构建、增量构建和部署

android - 错误:任务 ':app:ndkBuild'的执行失败。 >出现问题开始进程 'command ' ndk-build.cmd''