首页 > 解决方案 > 有条件地包含基于路径的项目

问题描述

我有这个:

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,但不确定如何使用。

标签: .netmsbuild

解决方案


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

推荐阅读