У меня была необходимость копирования содержимого из каталога в несколько мест, вот что я придумал, что работает. Поэтому я размещаю его здесь, если кто-то еще находится в подобной потребности, и сталкивается с этим вопросом, как я.
<!-- Create a list of the objects in PublishURL so it will copy to multiple directories -->
<ItemGroup>
<PublishUrls Include="$(PublishUrl)"/>
</ItemGroup>
<PropertyGroup>
<Files>$(OutputPath)\**\*</Files>
</PropertyGroup>
<!-- CopyNewFiles will copy all the files in $(OutputPath) to all the directories in the
in $(PublishUrl). $(PublishUrl) can be a single directory, or a list of directories
separated by a semicolon -->
<Target Name ="CopyNewFiles">
<!-- Get list of all files in the output directory; Cross product this with all
the output directories. -->
<CreateItem Include ="$(Files)"
AdditionalMetadata="RootDirectory=%(PublishUrls.FullPath)">
<Output ItemName ="OutputFiles" TaskParameter ="Include"/>
</CreateItem>
<Message Text="'@(OutputFiles)' -> '%(RootDirectory)\%(RecursiveDir)'"/>
<Copy SourceFiles="@(OutputFiles)"
DestinationFolder ="%(RootDirectory)\%(RecursiveDir)"/>
</Target>
Если вы хотите скопировать AssemblyInfo.cs
в папки A
и B
вы бы установить свойство Files="AssemblyInfo.cs"
и PublishUrls="A;B"
Что делает эту работу дополнительные метаданные в CreateItem задачи AdditionalMetadata="RootDirectory=%(PublishUrls.FullPath)"
так для каждого найденных файлов в File
он создает 1 запись для каждого элемента, найденного в PublishUrls
. В вашем случае одного файла, equivelent в выписывая XML будет:
Теперь, если вы скопировали содержимое папки, которые были файлы 1.txt
и 2.txt
копируются в A
и B
эквивалент XML будет:
<ItemGroup>
<OutputFiles Include="1.txt">
<RootDirectory>A</RootDirectory>
</OutputFiles>
<OutputFiles Include="2.txt">
<RootDirectory>A</RootDirectory>
</OutputFiles>
<OutputFiles Include="1.txt">
<RootDirectory>B</RootDirectory>
</OutputFiles>
<OutputFiles Include="2.txt">
<RootDirectory>B</RootDirectory>
</OutputFiles>
</ItemGroup>
Почему вы хотите скопировать тот же файл AssemblyInfo по всем вашим проектам? Не можете ли вы использовать ссылку на один файл? –
О, конечно! Спасибо –
Проверьте редактирование моего ответа ... и не забудьте принять, если вам это нравится;) –