如何在MSBuild中的复制任务期间指定目标目录

时间:2016-06-13 17:18:36

标签: msbuild

我有现有的MSBuild代码,但我需要进一步的帮助。

<!--?xml version="1.0" encoding="utf-8"?-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Demo">
    <ItemGroup>
        <Source1 Include="C:\temp\path01\**\*.txt" /> <!-- \%2A.txt -->
        <Target1 Include="C:\temp\path02" />
    </ItemGroup>
    <Target Name="Demo" BeforeTargets="Build;Rebuild">

        <!--<Exec Command="xcopy.exe /C /S /F /R /Y /I /D @(Source1) @(Target1)" />-->

        <Copy SourceFiles="@(Source1)" DestinationFiles="@(Source1->'@(Target1)\path02\%(RecursiveDir)%(Filename)%(Extension)')"
            SkipUnchangedFiles="true" />

        <Message Text="== END ===============================" />

    </Target>

</Project>

但似乎@(Target1)无效。它实际上创建了名为@(Target1)的目录,而不是使用Item值。请参阅下面的结果。

创建目录“@(Target1)\ path02”。   将文件从“C:\ temp \ path01 \ 0001.txt”复制到“@(Target1)\ path02 \ 0001.txt”。   将文件从“C:\ temp \ path01 \ 0002.txt”复制到“@(Target1)\ path02 \ 0002.txt”。   创建目录“@(Target1)\ path02 \ sub”。   将文件从“C:\ temp \ path01 \ sub \ sub-0003.txt”复制到“@(Target1)\ path02 \ sub \ sub-0003.txt”。   将文件从“C:\ temp \ path01 \ sub \ sub-0004.txt”复制到“@(Target1)\ path02 \ sub \ sub-0004.txt”。   ==结束===============================

如果可能,我想避免对目标目录进行硬编码 TIA。

0 个答案:

没有答案