Как построить список решений в файле нескольких свойств, используя msbuild? - PullRequest
0 голосов
/ 18 декабря 2011

У меня следующий список свойств файла Msbuild.

C: \ Постройте \ скрипт \ Master.targets

C: \ Постройте \ скрипт \ Master.properties

C: \ Постройте \ Component1 \ build.comp1.properties

C: \ Постройте \ Component2 \ build.comp2.properties

         .
         .

C: \ построить \ Component3 \ build.compn.properties

Component1.properties имеет список решений, подобных следующим

<Solution Include="C:\build\Component1\Mysoltuion.sln;">
      <Group>Firstcomp</Group>
      <AdditionalProperties>
        ValidateXaml=false;
        ReferencePath=$(DefaultReference);
      </AdditionalProperties>
      <IsRebuild>False</IsRebuild>
    </Solution>   

Component2.properties имеет список решений, подобных следующим

<Solution Include="C:\build\Component2\Mysoltuion.sln;">
      <Group>Firstcomp</Group>
      <AdditionalProperties>
        ValidateXaml=false;
        ReferencePath=$(DefaultReference);
      </AdditionalProperties>
      <IsRebuild>False</IsRebuild>
    </Solution>   

Master.properties будет иметь общие свойства для всех компонентов.

<Components Include="C:\Build\Comp1\Build.comp1.properties">
      <ComponentName>Comp1</ComponentName>
    </Components>

    <Components Include="C:\Build.CompN.Properties">
      <ComponentName>CompN</ComponentName>
    </Components>

У меня есть следующая цель, которая помогает мне собрать все компоненты

  <Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy">

    <MSBuild Projects="@(Components)"

             Targets="BuildComponent" />

  </Target>

Большую часть времени я хочу создавать отдельные компоненты. Как передать отдельные компоненты в одиночку.

1 Ответ

0 голосов
/ 19 декабря 2011

См. Ответ на аналогичный вопрос здесь:
Как передавать элементы один за другим в задачу msbuild?

По сути, вы можете получить доступ к пользовательским метаданным для каждого элемента вItemGroup, как это:

<Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy">
    <MSBuild Projects="%(Identity)" 
             Targets="%(ComponentName)" />
</Target>
...