2009-11-16 54 views
0

是合并所有的.js包含在一个大文件的项目文件的特定目标。我的一些.csproj的项目文件,有特殊目标“AssembleJS”(即webcontrols.csproj有目标“AssembleJS”与输出“webcontrols.js”)。检查,如果项目在MSBuild的

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

  1. 这已目标AssembleJS
  2. 参考项目webcontrols.csproj
  3. 参考工具项目utils.csproj不具有任何JavaScript和没有AssembleJS目标。

我希望目标AssembleJS parts.csproj在webcontrols.csproj中执行AssembleJS(与MSBuild使用标准Build目标相同)。

喜欢的东西

<MSBuild Project="@ReferencedProjects" Targets="AssembleJS"/> 

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

有什么办法来筛选根据项目是否有一定的目标@ReferencedProjects?

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

回答

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了一定的成效。

我应该在此扩展吗?

+0

它可能的MSBuild有最好的选择,但它创造的人工劳动量使得它无法使用我。 – mbergal 2009-11-16 18:51:20

+0

还有一件事情,它是“ProjectReference”,而不是“ReferencedProjects” – mbergal 2009-11-16 19:00:16

+0

好吧,我刚刚在你的例子中创建的名称。 – 2009-11-16 22:06:08