Проверка, есть ли у проекта конкретная цель в MSBuild - PullRequest
0 голосов
/ 16 ноября 2009

Некоторые из моих файлов проекта .csproj имеют специальную цель "AssembleJS", которая объединяет все файлы .js, включенные в проект, в один большой файл (т. Е. Webcontrols.csproj имеет цель "AssembleJS" с выводом "webcontrols.js").

Так что, если у меня есть проект parts.csproj

  1. Имеет target AssembleJS .
  2. Ссылки project webcontrols.csproj .
  3. Утилита ссылок project utils.csproj , которая не имеет JavaScript и не имеет цели AssembleJS.

Я хочу, чтобы целевой AssembleJS of parts.csproj выполнял AssembleJS в webcontrols.csproj (так же, как MSBuild работает со стандартной целью Build).

что-то вроде

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

не работает, потому что utils.csproj не имеет целевого AssembleJS.

Есть ли способ отфильтровать @ReferencedProjects на основе того, имеет ли проект определенную цель?

Есть еще идеи о том, как справиться с этим сценарием?

1 Ответ

2 голосов
/ 16 ноября 2009

Вы не можете делать то, что вам требуется. Но вы, возможно, сможете добиться этого с помощью дозирования.

<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 Batching и найдите некоторые результаты на sedodream.com , чтобы узнать больше Информация.

Должен ли я расширить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...