2016-06-10 76 views
1

我需要一些幫助使用MSBuild xcopy文件到兩個目錄。如何使用MSBuild遞歸地xcopy修改或新文件?

首先我找到了關於Sayed's after.xyz.sln.targets。這將確保複製文件任務將運行,而不管實際的構建是否發生。

我想使用它只將新的或修改過的文件複製到兩個目標目錄。所以我也需要一些比較代碼。我能想到的步驟。

  1. 將dir1與dir2進行比較,並在dir1中查找任何新的或已修改的文件。
  2. 遞歸地將這些文件複製到dir2。
  3. 然後遞歸地將確切的文件集複製到dir3。

TIA。

回答

2

您需要使用Copy任務的參數SkipUnchangedFiles。例如:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <ItemGroup> 
     <MySourceFiles Include="c:\MySourceTree\**\*.*"/> 
    </ItemGroup> 

    <Target Name="CopyFiles"> 
     <Copy 
      SourceFiles="@(MySourceFiles)" 
      DestinationFiles="@(MySourceFiles->'c:\MyDestinationTree\%(RecursiveDir)%(Filename)%(Extension)')" 
      SkipUnchangedFiles="true" 
     /> 
    </Target> 

</Project> 
+0

感謝您的信息。我當然不知道SkipUnchangedFiles。有沒有辦法讓我指定c:\ MyDestinationTree來自ItemGroup?我嘗試了@(MyTarget),但它實際上創建了像Item名字這樣的文件夾。 – sdog

+0

@sdog,我不知道我是否正確理解你在評論中的第二個問題。請爲此提出一個新問題,並更詳細地描述您的情況。 –

+0

我已添加新問題http://stackoverflow.com/q/37795621/2133696 – sdog

相關問題