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

时间:2017-09-03 02:55:35

标签: c# asp.net-core dependencies projects-and-solutions asp.net-core-2.0

在我使用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文件完成我想要的行为?谢谢!

2 个答案:

答案 0 :(得分:6)

我明白了。

为了让项目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

答案 1 :(得分:0)

如果您希望在.NET Framework和ASP.NET MVC 5项目中具有相同的行为,则可以在根文件夹中创建此Directory.Build.props文件。

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

如果您想要更详细的说明,可以阅读我的其他answer类似问题。