Я хотел бы скопировать различные файлы из моего проекта в выходную папку.Однако нет правила, какие файлы следует копировать, а какие нет, поэтому я не могу надежно использовать подстановочный символ **.
Я придумал что-то вроде этого:
<Target Name="CopyMyFiles">
<ItemGroup>
<FilesToCopyToOutput Include=".\folder1\*.dat" />
<FilesToCopyToOutput Include=".\folder2\*" />
<FilesToCopyToOutput Include=".\folder3\*.txt" />
</ItemGroup>
<Message Text="Copying files..."/>
<Copy SourceFiles="@(FilesToCopyToOutput)"
DestinationFolder="%(OutputFolder)\files"/>
</Target>
но дело в том, что это не сохраняет структуру папок, поэтому «folder1», «folder2», ... теряются, и все файлы оказываются в одном каталоге.Я заметил, что не могу использовать %(FilesToCopyToOutput.RecursiveDir)
без использования подстановочного знака.
Я бы хотел, чтобы этот процесс копирования был настолько автоматизирован, насколько это возможно, так как список файлов, которые нужно скопировать, меняется довольно часто, и я бы предпочел избегать ситуации, когда мне нужно добавить отдельную задачу для каждогопапка.
РЕДАКТИРОВАТЬ: На данный момент я пришел к следующему
<Target Name="CopyMyFiles">
<ItemGroup>
<FilesToCopyToOutput Include=".\folder1\*.dat" />
<FilesToCopyToOutput Include=".\folder2\*" />
<FilesToCopyToOutput Include=".\folder3\*.txt" />
</ItemGroup>
<Message Text="Copying files..."/>
<Copy SourceFiles="@(FilesToCopyToOutput)"
DestinationFolder="%(OutputFolder)\files\%(FilesToCopyToOutput.RelativeDir)"/>
</Target>
Согласно документу, атрибут "RelativeDir" содержит путь, указанный до последнего "\",Это нормально для меня, однако может быть немного сложнее, если путь определяется с помощью параметра "% (ProjectDir)".
Пока я собираюсь использовать этот, но я рад слышать, если естьлюбой лучший способ решения этой проблемы.