根据路径有条件地包含项目

Conditionally include project based on path

我有这个:

MyProject/
  Common/
    Common.csproj
  Main/
    Libs/
      Utils/
        Utils.csproj
      Legacy/
        Legacy.csproj
    Server/
      Server.csproj
    Directory.Build.props

我希望 Main/ 中的所有项目都包含 Common 项目。

所以 Directory.Build.props 有这个:

<ItemGroup>
  <ProjectReference Include="../../Common/Common.csproj" />
</ItemGroup>

因此 Server 项目包括 Common 项目,因为它比它低两层。但是 Libs/ 中的项目无法包含它,因为它向下三层。

我需要做这样的事情:

<ItemGroup>
  <ProjectReference Include="../../Common/Common.csproj" Condition="if 2 levels up is 'MyProject'"/>
  <ProjectReference Include="../../../Common/Common.csproj" Condition="if 3 levels up is 'MyProject'"/>
</ItemGroup>

我要在 Condition 中输入什么?我知道我需要使用 MSBuildThisFileDirectory 但不确定如何使用。

<ItemGroup>
  <ProjectReference Include="../../Common/Common.csproj" Condition="Exists('../../Common')'"/>
  <ProjectReference Include="../../../Common/Common.csproj" Condition="Exists('../../../Common')'"/>
</ItemGroup>