Я пытаюсь использовать MSBuild для чтения в списке файлов из текстового файла, а затем выполнять рекурсивную копию, копируя содержимое этих файлов каталогов в какую-либо промежуточную область, исключая определенные расширения (например, файлы .tmp )
Мне удалось выполнить большую часть вышеизложенного довольно просто с помощью CreateItem и задачи копирования MSBuild, независимо от того, что я делаю, задача CreateItem просто игнорирует мой параметр Exclude:
<PropertyGroup>
<RootFolder>c:\temp</RootFolder>
<ExcludeFilter>*.tmp</ExcludeFilter>
<StagingDirectory>staging</StagingDirectory>
</PropertyGroup>
<ItemGroup>
<InputFile Include="MyFile.txt" />
</ItemGroup>
<Target Name="Build">
<ReadLinesFromFile File="@(InputFile)">
<Output ItemName="AllFolders" TaskParameter="Lines" />
</ReadLinesFromFile>
<CreateItem Include="$(RootFolder)\%(AllFolders.RelativeDir)**"
Exclude="$(ExcludeFilter)">
<Output ItemName="AllFiles" TaskParameter="Include" />
</CreateItem>
<Copy SourceFiles="@(AllFiles)"
DestinationFolder="$(StagingDirectory)\%(RecursiveDir)"
Пример содержимого "MyFile.txt":
somedirectory\
someotherdirectory\
(I.e. пути относятся к $(RootFolder)
- упомяните об этом, потому что я где-то читал, что это может быть актуально)
Я пробовал множество различных комбинаций фильтров Exclude, но, похоже, я никогда не смог заставить его правильно исключить мои .tmp файлы - есть ли способ сделать это с помощью MSBuild, не прибегая к xcopy?