为什么.net核心允许通过项目依赖性进行程序集访问

时间:2018-02-11 13:28:47

标签: c# .net .net-core

在.net框架项目/程序集中考虑这个设置:

  • layer3(.net框架控制台应用)引用Layer2
  • Layer2(.net框架库)引用Layer1
  • Layer1(.net框架库)不引用任何内容

现在,当我尝试从Layer3访问Layer1时,它不会允许我:

enter image description here

  

类型或命名空间名称' Layer1'找不到(你错过了使用指令或汇编引用吗?)

这是有道理的。

现在,当我在.net标准项目和.net核心控制台应用程序中创建相同的设置时,如下所示:

  • layer3(.net核心控制台应用)引用Layer2
  • Layer2(.net标准库)引用Layer1
  • Layer1(.net标准库)不引用任何内容

我能够做到这一点,编译得很好:

enter image description here

这对我没有意义。

这是设计的吗?如何防止此行为?

1 个答案:

答案 0 :(得分:2)

所以,事实证明这是设计的,解决方法是:

  <ItemGroup>
      <ProjectReference Include="..\ClassLibraryA\ClassLibraryA.csproj" PrivateAssets="All" />  
  </ItemGroup>

See also this github issue