为什么可以从.NET Core中的子引用导入名称空间? [重复]

问题描述 投票:0回答:1

我在解决方案中有3个项目。

  • TestProject
  • 儿童
  • childOfchild

-TestProject引用了子项目

-Child项目已引用childOfchild项目

我希望无法从TestProject中的childOfchild项目创建该类的实例。这对我来说没有意义。如果我愿意,我可以将childOfchild项目导入TestProject,但是我不想要那样。这正是我要避免的事情,并且我想清楚地将各层分开。

enter image description here

我很确定这不能像之前那样工作。如果有人向我解释这种情况,我将不胜感激。

c# .net visual-studio asp.net-core-2.0 visual-studio-2019
1个回答
0
投票

此行为由基于.NET Core / .NET Standard / SDK的csproj的新项目系统提供(选择名称,它们都表示相同的意思)。新的行为是PackageReferences和ProjectReferences现在默认情况下是可传递的,这意味着当您引用项目时,将自动继承其Package-或ProjectReferences。

您可以通过在包含该引用的项目上设置PrivateAssets属性来对其进行控制。在您的示例中:在Child.csproj中,您可以执行以下操作:

<ItemGroup>
  <ProjectReference Include="..\ChildOfChild\ChildOfChild.csproj" PrivateAssets="all" />
</ItemGroup>

这告诉项目系统“我想引用ChildOfChild,但是我不希望实现细节暴露给引用我的项目。”

请参阅此blog post了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.