检查项目是否在MSBuild中具有特定目标

时间:2009-11-16 12:16:11

标签: msbuild

我的一些.csproj项目文件有特殊目标“AssembleJS”,它将项目中包含的所有.js文件合并到一个大文件中(即webcontrols.csproj的目标为“AssembleJS”,输出为“webcontrols.js”)。 p>

所以,如果我有项目 parts.csproj

  1. 目标AssembleJS
  2. 参考项目webcontrols.csproj
  3. 引用实用程序 project utils.csproj ,它没有任何JavaScript且没有AssembleJS目标。
  4. 我希望parts.csproj的目标AssembleJS在webcontrols.csproj中执行AssembleJS(与MSBuild的标准Build目标一样)。

    这样的东西
    <MSBuild Project="@ReferencedProjects" Targets="AssembleJS"/> 
    

    不起作用,因为utils.csproj没有目标AssembleJS。

    有没有办法根据项目是否有某个目标来过滤@ReferencedProjects?

    关于如何处理这种情况的任何其他想法?

1 个答案:

答案 0 :(得分:2)

你不能做你想要的。但是你可以通过批处理来实现它。

<Project xmlns=''>
    <ItemGroup>
        <ReferencedProjects Include="webcontrols.csproj">
            <Type>Web</Type>
        </ReferencedProjects>
        <ReferencedProjects Include="utils.csproj">
            <Type>NonWeb</Type>
        </ReferencedProjects>
    </ItemGroup>

   <Target Name="BuildWebProjects">
        <MSBuild Projects="@(ReferencedProjects)" Condition=" '%(ReferencedProjects.Type)' == 'Web' " />
   </Target>

</Project>

搜索 MSBuild批处理并在sedodream.com上查找一些结果以获取更多信息 资讯

我应该扩展一下吗?