繁体   English   中英

如何在 ASP.NET Core 中排除项目依赖项?

[英]How do I exclude project dependencies in ASP.NET Core?

在我使用 ASP.NET Core 2.0 的解决方案中,我有三个项目:A、B 和 C。我希望项目依赖项的行为是 A 依赖 B,B 依赖 C,C 没有依赖项。

在 ASP.NET MVC 5 中,这很容易通过将 A 设置为引用 B 并将 B 设置为引用 C 来实现。但是在 Core 中,当一个项目依赖另一个项目时,它也会继承该项目的所有依赖项。 在这种情况下,这意味着 A 继承了 B 对 C 的依赖。可以在 Visual Studio 的解决方案资源管理器中看到这种依赖: .

我希望 A 依赖 B,但不依赖 B,就像这样: .

有谁知道如何通过 Visual Studio 或 .csproj 文件完成我想要的行为? 谢谢!

我想通了。

为了让项目 A 引用 B 和 B 引用 C,但 A引用 C,我将PrivateAssets="All"添加到 B 的 ProjectReference 到 C,如下所示:

在 B.csproj

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

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

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

如果您想要与 .NET Framework 和 ASP.NET MVC 5 项目中相同的行为,那么您可以在根文件夹中创建此Directory.Build.props文件。

<Project>
  <PropertyGroup>    
    <DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
  </PropertyGroup>
</Project>

如果你想要更详细的解释,你可以阅读我对类似问题的其他回答

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM