按条件构建.NET项目依赖项

时间:2018-04-19 13:57:42

标签: .net msbuild dependency-management

我的解决方案中有一个主要项目和几个家属。我希望我的主项目只有一个引用依赖项目的条件(编译符号)。

我尝试将此代码添加到每个dependend项目的项目文件中:

<ItemGroup Condition="$(DefineConstants.Contains('SomeConstant'))">
  <ProjectReference Include="..\DependentProj1\DependentProj1.csproj">
    <Project>{7d971fa6-9225-4d54-b21c-077eb46c5dd4}</Project>
    <Name>DependentProj1</Name>
  </ProjectReference>
</ItemGroup>

在这种情况下,将构建所有dependend项目,并且只将一个二进制文件复制到主输出。它不适合我。

我也尝试过:

<Choose>
  <When Condition="$(DefineConstants.Contains('SomeConstant'))">
    ...
  </When>
</Choose>

但由于某些原因,它不能按我的意愿工作。

当我更改条件编译符号时,有人可以建议我如何构建一个依赖项吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

考虑使用类似的东西

<PropertyGroup>
   <SomeConstantProp>...</SomeConstantProp>
   <DeclareConstants Condition="'$(SomeConstantProp)' != ''">

$(DeclareConstants); yourConst     

<ItemGroup Condition="'$(SomeConstantProp)' != ''">
  <ProjectReference Include="..\DependentProj1\DependentProj1.csproj">
    <Project>{7d971fa6-9225-4d54-b21c-077eb46c5dd4}</Project>
    <Name>DependentProj1</Name>
  </ProjectReference>
</ItemGroup>