Как передать элементы один за другим в задачу msbuild? - PullRequest
0 голосов
/ 15 декабря 2011

У нас есть файлы свойств x, y, z и файл master.properties

Теперь я записал в свой файл master.properties некоторую группу элементов, как показано ниже, и передал эту группу элементов в цель msbuild так, чтобыон будет работать как foreach.

Группа товаров:

 <Components Include="Y:\Build\X.Properties">
      <ComponentName>X</ComponentName>
    </Components>

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

   <Components Include="Y:\Build\Z.Properties">
      <ComponentName>Z</ComponentName>
    </Components>



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

    <MSBuild Projects="@(Components)" 

             Targets="BuildComponent" />

  </Target>

Теперь я хочу получить текстовый файл, в котором имена компонентов будут иметь следующий вид:

XY

он должен создавать только X и Y.

Я пытался с ReadLinesFromFile, но я не могу передать один за другим компонент.

Например:

 <ReadLinesFromFile File="Allcomponent.txt">
      <Output TaskParameter="Lines" ItemName="AllComponent" />
  </ReadLinesFromFile>

Затем я хочу передать компонент в группу элементов один за другим для вызова задач Msbuild.

Как это решить?

Ответы [ 2 ]

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

Наконец я нашел решение. Решение как ниже

Я должен создать свойство с именами компонентов.

<X>Y:\Build\X.Properties</X>
<Y>Y:\Build\Y.Properties</Y>
<Z>Y:\Build\Z.Properties</Z>

И в задаче Msbuild я должен следовать, как показано ниже

<Target Name="BuildAll" >

    <ReadLinesFromFile  File="$(AllComponents)">
      <Output TaskParameter="Lines" ItemName="AllComponents"/>
    </ReadLinesFromFile>

    <MSBuild Projects="$(%(AllComponents.Identity))"

             Targets="BuildComponent" />

</Target>

Теперь он создаст компонент, который я передаю через текстовый файл.

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

Ваш вопрос не очень понятен, особенно после того, как «я не могу передать один за другим компонент».

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

<Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy">
    <MSBuild Projects="%(Identity)" 
             Targets="%(ComponentName)" />
</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...