Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在使用IoC/DI时最好地管理依赖关系?_C#_.net_Dependency Injection_Inversion Of Control_Unity Container - Fatal编程技术网

C# 如何在使用IoC/DI时最好地管理依赖关系?

C# 如何在使用IoC/DI时最好地管理依赖关系?,c#,.net,dependency-injection,inversion-of-control,unity-container,C#,.net,Dependency Injection,Inversion Of Control,Unity Container,我想知道在使用IoC/DI时,跟踪应用程序的所有依赖关系的最佳实践是什么 目前,我正在做的是在后期构建步骤中复制依赖项 当一个库被引用为“旧式”时,VS负责将所有依赖项复制到bin文件夹,以便所有依赖项都准备好使用,但对于依赖项在运行时确定的DI方法,似乎没有这样的过程 然后调试就变成了(除非我做错了什么)一个寻找依赖关系并确保所有文件都可用的游戏。看看下面的例子,我已经经历了控制器->接口->具体实现->DAL基类->DAL,当在DAL代码中寻找依赖项时,它会中断 在这一点上,我知道它将击中G

我想知道在使用IoC/DI时,跟踪应用程序的所有依赖关系的最佳实践是什么

目前,我正在做的是在后期构建步骤中复制依赖项

当一个库被引用为“旧式”时,VS负责将所有依赖项复制到bin文件夹,以便所有依赖项都准备好使用,但对于依赖项在运行时确定的DI方法,似乎没有这样的过程

然后调试就变成了(除非我做错了什么)一个寻找依赖关系并确保所有文件都可用的游戏。看看下面的例子,我已经经历了控制器->接口->具体实现->DAL基类->DAL,当在DAL代码中寻找依赖项时,它会中断

在这一点上,我知道它将击中GAC,所以一切都应该很好,但排列所有依赖项是乏味的。如果它与这个问题密切相关,那么我在这里使用的框架就是统一


您可以将所有项目的输出设置为同一文件夹。这样还可以减少文件系统中的垃圾。但是,在某些情况下(文件名冲突、构建多个单独的产品等),它可能不是最佳选择。

您使用自动注册还是xml注册?因为如果在代码中注册所有依赖项(在“composition root”中),那么它会自动引用所有必需的类型,从而确保将它们复制到输出目录,因为我认为最大限度的灵活性对我来说是最好的。这在它的建议中是惊人的简单,我不敢相信我没有想到它!我创建了两个新配置(一个基于调试,一个基于发布),并将输出文件夹设置为新位置。谢谢你的回答