C# – 在使用没有引用的dependency injection时将dll复制到exe输出目录?

我有一个C#解决方案,我使用dependency injection来解析dll之间的引用。 我有一个exe项目和一些其他没有被exe引用的dll项目(它通过IoC容器使用dll)。 项目设置是默认的visual studio设置,它在其自己的文件夹中构建每个dll。 由于exe没有引用dll,因此它们永远不会被复制到exe的输出目录中,并且不会被IoC框架找到。

你怎么处理这个? 你在同一个目录中构建它们吗? 使用post build copy命令? 或者是其他东西?

我通常使用构建后复制命令(使用构建事件 ,因此它们是自动的)来处理这个问题,该命令将依赖项程序集放入共享文件夹中。

然后我确保此文件夹包含在我的IoC容器的搜索路径中,以便找到它们。

另一个类似的选择是在主应用程序项目中使用构建事件。 然后,它可以将依赖项复制到适当的文件夹中。 这样做的优点是允许不同的依赖关系在同一解决方案中用于不同的应用程序,同时仍然易于维护。

使用post build copy命令或将所有项目的输出目录更改为公共目录

我会(并且确实)使用post build copy命令。 创建一个.BAT文件,该文件生成所有必需的副本,将其附加到构建后事件,然后就完成了。