.NET中的循环DLL依赖项

时间:2012-01-16 02:06:32

标签: .net circular-dependency

我有一个DLL,它提供ASP.MVC应用程序的入口点。我们称之为 Primary.DLL 。在Primary.DLL中,有LINQ-to-SQL数据上下文和其他定义的类。 Application_Start()中的某处,Assembly.Load()被调用以加载 Secondary.DLL 。辅助节点未在Primary.DLL的项目文件中引用。但是在Secondary.DLL的项目文件中引用了Primary,因为LINQ-to-SQL数据上下文和上面提到的其他类在Secondary中使用。

这是否会造成循环依赖问题?这种设计会有问题吗?

3 个答案:

答案 0 :(得分:1)

程序集不会重新加载到AppDomain中,并且您只在Application_Start中加载Secondary.dll,因此这不会导致任何问题,也不会导致任何循环依赖的表现。

答案 1 :(得分:1)

它不会产生循环依赖问题,但它可能不是一个很好的设计。循环依赖关系需要两个或多个项目之间的实际引用。

答案 2 :(得分:1)

我们始终使用客户特定的自定义DLL执行此操作。我们在Web应用程序,服务和桌面版中使用相同的功能。

客户DLL引用基础项目DLL,以便它们可以从各种类继承并实现接口。为此,他们必须引用base dll。

在应用程序启动时(global.asax Application_Start或exe的初始化例程),我们通过Assembly.Load加载任何已发现的自定义DLL,但它肯定不会创建交叉引用。