根据路径有条件地包含项目
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>
我有这个:
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>