在我使用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文件完成我想要的行为?谢谢!
答案 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。
答案 1 :(得分:0)
如果您希望在.NET Framework和ASP.NET MVC 5项目中具有相同的行为,则可以在根文件夹中创建此Directory.Build.props文件。
<Project>
<PropertyGroup>
<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>
</Project>
如果您想要更详细的说明,可以阅读我的其他answer类似问题。