2009-11-16 2 views
0

일부 .csproj 프로젝트 파일에는 프로젝트에 포함 된 모든 .js 파일을 하나의 큰 파일로 병합하는 특수 대상이 있습니다 (예 : webcontrols.csproj의 대상이 "AssembleJS"이고 출력이 "AssembleJS"임). "webcontrols.js").프로젝트에 MSBuild에서 특정 대상이 있는지 확인

그래서 나는 프로젝트 대상 AssembleJS을 가지고 parts.csproj

  1. 이있는 경우.
  2. 참고 자료 project webcontrols.csproj.
  3. 참조 유틸리티 프로젝트 utils.csproj JavaScript가없고 AssembleJS 대상이 없습니다.

target.csproj의 target Assemblies는 webcontrols.csproj에서 AssembleJS를 실행합니다 (MSBuild는 표준 Build 타겟과 동일하게 작동합니다). utils.csproj가 대상 AssembleJS이 없기 때문에

<MSBuild Project="@ReferencedProjects" Targets="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

+0

그리고 한 가지 더, "ReferencedProjects"가 아닌 "ProjectReference" – mbergal

+0

좋아, 나는 당신이 당신의 예제에서 만든 이름을 사용하려고했다. –

관련 문제