Группы элементов в msbuild - PullRequest
       37

Группы элементов в msbuild

1 голос
/ 22 января 2010

У меня есть следующая группа товаров:

  <ItemGroup>
    <ReleaseFiles Include="MyApp\*.ashx"/>
    <ReleaseFiles Include="MyApp\*.config"/>
    <ReleaseFiles Include="MyApp\bin\*.dll"/>
    <ReleaseFiles Include="MyApp\bin\*.exe"/>
    <ReleaseFiles Include="MyApp\bin\*.pdb"/>
    <ReleaseFiles Include="MyApp\bin\*.config"/>   
  </ItemGroup>

и следующая цель копирования:

<Copy SourceFiles="@(ReleaseFiles)" DestinationFiles="@(ReleaseFiles->'\\$(DeploymentMachine)\C$\Program Files\MyApp\%(RecursiveDir)%(Filename)%(Extension)')" />

но проблема в том, что каталог bin не сохраняется (все файлы попадают в каталог верхнего уровня).

Обратите внимание, что для создания zip-файла мне нужно использовать ту же группу элементов:

<Zip Files="@(ReleaseFiles)" ZipFileName="$(server)\$(BUILD_NUMBER).$(BUILD_VCS_NUMBER)\myApp.zip" WorkingDirectory="MyApp"/>

, который работает нормально. Как мне заставить копию работать так же?

Ответы [ 2 ]

2 голосов
/ 22 января 2010

Вы должны заставить движок MSBuild думать, что bin является частью рекурсивной папки. Для этого добавьте * после папки bin следующим образом:

<ItemGroup>
    <ReleaseFiles Include="MyApp\*.ashx"/>
    <ReleaseFiles Include="MyApp\*.config"/>
    <ReleaseFiles Include="MyApp\bin*\*.dll"/>
    <ReleaseFiles Include="MyApp\bin*\*.exe"/>
    <ReleaseFiles Include="MyApp\bin*\*.pdb"/>
    <ReleaseFiles Include="MyApp\bin*\*.config"/>   
</ItemGroup>
0 голосов
/ 22 января 2010

Кажется, что смешивание глубины пути в вашем

<ReleaseFiles/>

прерывает рекурсию.

Попробуйте это:

<ItemGroup>
    <ReleaseFiles Include="MyApp\**\*.ashx" />
    <ReleaseFiles Include="MyApp\**\*.config" />
    <ReleaseFiles Include="MyApp\**\*.dll" />
    <ReleaseFiles Include="MyApp\**\*.exe" />
    <ReleaseFiles Include="MyApp\**\*.pdb" />
    <ReleaseFiles Include="MyApp\**\*.config" />
</ItemGroup>

<Copy SorceFiles="@(ReleaseFiles)" DestinationFiles="@(ReleaseFiles->'\\$(DeploymentMachine)\C$\Program Files\MyApp\%(RecursiveDir)%(Filename)%(Extension)')" />

Надеюсь, это решит вашу проблему.

UPDATE

Я только что прочитал, что с использованием путей UNC также может вызвать эту проблему ... но это должно быть исправлено в 3.5

...