如何排除 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,但是none个B的依赖,像这样:.
有谁知道如何通过 Visual Studio 或 .csproj 文件实现我想要的行为?谢谢!
我想通了。
为了让项目 A 引用 B 和 B 引用 C,但 A 不 引用 C,我将 PrivateAssets="All"
添加到 B 对 C 的 ProjectReference,例如所以:
在B.csproj
<ItemGroup>
<ProjectReference Include="..\C\C.csproj" PrivateAssets="All" />
</ItemGroup>
此设置使 C 的引用私有,因此它仅存在于 B 中。现在引用 B 的项目将不再引用 C。
如果您想要与 .NET Framework 和 ASP.NET MVC 5 项目中相同的行为,那么您可以在根文件夹中创建此 Directory.Build.props 文件。
<Project>
<PropertyGroup>
<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>
</Project>
如果你想要更详细的解释,你可以阅读我的另一个类似问题。
在我使用 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,但是none个B的依赖,像这样:
有谁知道如何通过 Visual Studio 或 .csproj 文件实现我想要的行为?谢谢!
我想通了。
为了让项目 A 引用 B 和 B 引用 C,但 A 不 引用 C,我将 PrivateAssets="All"
添加到 B 对 C 的 ProjectReference,例如所以:
在B.csproj
<ItemGroup>
<ProjectReference Include="..\C\C.csproj" PrivateAssets="All" />
</ItemGroup>
此设置使 C 的引用私有,因此它仅存在于 B 中。现在引用 B 的项目将不再引用 C。
如果您想要与 .NET Framework 和 ASP.NET MVC 5 项目中相同的行为,那么您可以在根文件夹中创建此 Directory.Build.props 文件。
<Project>
<PropertyGroup>
<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>
</Project>
如果你想要更详细的解释,你可以阅读我的另一个