我有一个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中使用。
这是否会造成循环依赖问题?这种设计会有问题吗?
答案 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,但它肯定不会创建交叉引用。