Как включить родительский каталог в RecursiveDir? - PullRequest
1 голос
/ 16 мая 2011

Я пытаюсь скопировать определенные каталоги, сохраняя структуру каталогов, но не могу найти способ включить определенные подкаталоги в% (RecursiveDir)

Одно решение будет использовать более общиезахватить .\**\Dir1\**\*.*, но это может захватить некоторые несвязанные вещи, такие как Level1 \ Dir1, что не подходит для моей задачи.

На данный момент, я должен использовать все включено **\*.*, а затем удалитьконкретные каталоги из группы предметов.

Вот скрипт:

<ItemGroup>
 <Files Include=".\Dir1\**\*.*" />
 <Files Include=".\Dir2\**\*.*" />
</ItemGroup>

<Target Name="CopyFiles">
 <ItemGroup>
   <Files Remove=".\**\.svn\**" />
 <ItemGroup>
 <Copy SourceFiles="@(Files)" DestinationFolder="..\OtherDir\%(Files.RecursiveDir)"
</Target>

Результат:

..\OtherDir\FileFromDir1.txt
..\OtherDir\FileFromDir2.txt

Но мне нужно:

..\OtherDir\Dir1\FileFromDir1.txt
..\OtherDir\Dir2\FileFromDir2.txt

Как этого добиться?

Ответы [ 3 ]

2 голосов
/ 23 мая 2013

Нельзя оставить эту общую проблему без ответа ... решение добавляет дополнительный префикс ** перед именем родительского каталога:

<ItemGroup>
 <Files Include=".\**\Dir1\**\*.*" />
 <Files Include=".\**\Dir2\**\*.*" />
</ItemGroup>
1 голос
/ 16 мая 2011

Вы хотите использовать DestinationFiles, а не DestinationFolder, и можете использовать преобразование элемента для построения пути.

<Copy
  SourceFiles="@(Files)"
  DestinationFiles="@(Files->'..\OtherDir\%(RecursiveDir)%(FileName)%(Extension)')"
  />
0 голосов
/ 16 мая 2011

попробуйте изменить% (Files.RecursiveDir) на

% (RecursiveDir)% (Имя файла)% (расширение)

чтобы дать вам

DestinationFolder = ".. \ OtherDir \% (RecursiveDir)% (Filename)% (Extension)"

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