我需要跳过所有结束于" .UnitTests"当我为ARM构建它时,从构建管道。
如果我为x86构建,我需要构建它,但是排除其他项目吗?
是否可以通过某种规则跳过构建过程中的某些项目?
答案 0 :(得分:2)
msbuild这样做的方法是使用Visual Studio中的Configuration Manager
(Build -> Configuration Manager
)将项目映射到解决方案配置/平台。
在Configuration Manager
:
选择ARM
作为Active Solution Platform
并取消选中所有Build
项目的*.UnitTests
,并确保已检查其他项目Build
。
根据您要构建的项目,选择x86
作为Active Solution Platform
检查/取消选中Build
。
这意味着无论何时为Platform=ARM
构建解决方案,都会构建除*.UnitTests
之外的所有项目。同样适用于Platform=x86
。
您可以详细了解here。
更新
如果您需要更多自定义逻辑来选择要构建的项目,那么您可以创建一个新的顶级构建文件,如:
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="'$(Platform)' == 'ARM'">
<ARMProjects Include="abc\*.csproj" Exclude="**\*.UnitTests.csproj"/>
<ARMProjects Include="def\*.csproj" Exclude="**\*.UnitTests.csproj"/>
</ItemGroup>
<ItemGroup Condition="'$(Platform)' == 'x86'">
<!-- Create a group named X86Projects and select the projects as you need to -->
</ItemGroup>
<Target Name="Build">
<MSBuild Project="@(ARMProjects)" Targets="Build" Condition="'$(Platform)' == 'ARM'"/>
<MSBuild Project="@(X86Projects)" Targets="Build" Condition="'$(Platform)' == 'x86'"/>
</Target>
</Project>
根据您的需要调整构建目标或项目。