.Net Core 1.1中的传递引用

Fra*_*nco 15 .net c# transitive-dependency asp.net-core

在.NET Core 1.1和Visual Studio 2017 RC中开发示例Web应用程序时,我意识到以下内容:

在此输入图像描述

如你看到的:

  • ClassLibrary3引用了ClassLibrary2,
  • 和ClassLibrary2引用ClassLibrary1

我在ClassLibrary3项目的Class3类中编写了一个简单的方法,而Intellisense允许我使用Class1来编写类的名称,我的意思是,没有对ClassLibrary1项目进行显式引用.

我在这里错过了一些观点吗?我不希望有人只是来看看ClassLibrary2.

谢谢.

nat*_*ter 11

可传递的项目到项目引用是Visual Studio 2017和Microsoft.NET.Sdk的新功能.这是故意的行为.

请参阅https://github.com/dotnet/sdk/issues/200.


lev*_*sel 10

如果您对禁用传递引用行为感兴趣,我终于找到了一种方法.

如果您希望项目A引用B和B引用C,但不希望A引用C,则可以将PrivateAssets="All"B的ProjectReference 添加到C,如下所示:

在B.csproj

<ItemGroup>
  <ProjectReference Include="..\C\C.csproj" PrivateAssets="All" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

此设置使C的引用为私有,因此它仅存在于B中.现在引用B的项目将不再引用C.

资料来源:https://github.com/dotnet/project-system/issues/2313