0

在我使用ASP.NET Core 2.0的解决方案中,我有三个项目:A,B和C.我期望的项目依赖关系的行为是A依赖于B,B依赖于C和C来没有依赖关系。如何排除ASP.NET Core中的项目依赖关系?

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

我想要A取决于B,但没有B的依赖关系,如下所示:

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

+0

不是2.0的新功能之一,当您构建项目的释放版本时,仅使用它的依赖关系被引用?虽然我不确定它是否能完全解决您的问题,但您可以研究这是如何工作的。 –

+0

@JohanHerstad谢谢,我已经看过这个,但不认为它会解决我的问题。我想以这种方式设置我的项目的最大原因之一是,它将永远不会建议**在“显示潜在修复程序”中使用ProjectC **语句。这将使任何在A项目上工作的开发人员无法意外地引用项目C. –

回答

0

我想通了。

为了项目A引用B和B到参考C,但A至参考C,I加入到PrivateAssets="All" B的ProjectReference至C,如下所示:

在B.csproj

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

此设置使C'S参考私人所以它只存在内B.现在预测,参考B将不再还引用了C.

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