Asp.net core 对其他项目的.NET核心引用打破了层隔离

Asp.net core 对其他项目的.NET核心引用打破了层隔离,asp.net-core,.net-core,asp.net-core-mvc,Asp.net Core,.net Core,Asp.net Core Mvc,我正在使用以下项目构建.NET核心web应用程序: WebApplication1(用户界面) BLL 达尔 众所周知,UI应该只访问BLL项目类,而BL项目应该只访问DAL项目类 因此,我设置了以下内容: WebApplication1仅引用BLL项目。 BLL仅参考DAL项目 在.NET Framework 4.7(非核心)中,除非显式添加对DAL的引用,否则不能直接从WebApplication1访问DAL类。它很有用,因为这样您就不会意外地直接从WebApplication1(UI)

我正在使用以下项目构建.NET核心web应用程序:

  • WebApplication1(用户界面)

  • BLL

  • 达尔

众所周知,UI应该只访问BLL项目类,而BL项目应该只访问DAL项目类

因此,我设置了以下内容:

WebApplication1仅引用BLL项目。 BLL仅参考DAL项目

在.NET Framework 4.7(非核心)中,除非显式添加对DAL的引用,否则不能直接从WebApplication1访问DAL类。它很有用,因为这样您就不会意外地直接从WebApplication1(UI)访问DAL,您需要通过BLL项目来访问DAL

当我尝试从.NET Framework移植到.NET Core时,我发现行为已经发生了变化,我可以直接从WebApplication1访问DAL类,如屏幕截图所示,只需使用“using DAL”,而无需直接向DAL添加引用。

框架自动将对DAL的引用显示为“子引用”

有人能解释一下吗


我想继续使用“精心设计”的三层隔离体系结构,新方法似乎打破了这一点。

您能上传项目财产的图片吗?(每个项目都有)所有默认值。我只是制作了一个用于测试的示例解决方案。你能试着复制并查看吗?可能的重复我不同意它的重复,因为这里我不是问如何禁用它。我是问微软为什么做出更改,以及它的优缺点是什么。