試圖複製整個文件夾,但是當我這樣做:MSBUILD拷貝整個文件夾
<Copy SourceFiles="$(TargetDir)\*.*" DestinationFolder="$(BuildOutput)\SomeDir" />
副本試圖做到這一點:複製c:\源\ *。* C:\目標\ SomeDir \ *。*和失敗,「非法字符」
試圖複製整個文件夾,但是當我這樣做:MSBUILD拷貝整個文件夾
<Copy SourceFiles="$(TargetDir)\*.*" DestinationFolder="$(BuildOutput)\SomeDir" />
副本試圖做到這一點:複製c:\源\ *。* C:\目標\ SomeDir \ *。*和失敗,「非法字符」
明確指定您的SourceFiles的ItemGroup。
<ItemGroup>
<_CopyItems Include="$(TargetDir)\*.*" />
</ItemGroup>
<Copy
SourceFiles="@(_CopyItems)"
DestinationFolder="$(BuildOutput)\SomeDir"
/>
請注意_CopyItems是一個項目類型,因此它使用'@'符號而不是'$'引用。
清盤最好加'
望着MSDN文檔,我相信SourceFiles參數需要一個ITaskItem []值。見上面的鏈接MSDN MSBuild Copy Task
最後一個例子是從一個目錄到另一個做遞歸複製,保持文件夾結構。
複製文件可以用下面的代碼片段它處理的防病毒程序和子目錄
<ItemGroup>
<SomeAppStuff Include="$(SolutionDir)\ProjectXXX\bins\**\*.*" />
</ItemGroup>
<Copy
SourceFiles="@(SomeAppStaff)"
DestinationFolder="$(OutputPath)\%(RecursiveDir)"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="true"
Retries="3"
RetryDelayMilliseconds="300"/>
指定$(OutputPath)\%(RecursiveDir)
會要求複製任務尊重的子文件夾,因此它將把源代碼目錄的子文件夾到目標目錄的子文件夾來完成。
SkipUnchangedFiles
將增加足夠的內存的計算機上生成速度,因爲Windows優化IO爲經常使用的文件時,有足夠的RAM。
Retries
和RetryDelayMilliseconds
處理相關 一)壓縮的NTFS文件系統的問題,建立時很少在情況下b)防病毒軟件與SSD硬盤。
什麼'DestinationFolder'設置路徑\%(RecursiveDir)的後果?它將把該目錄在預定位置,或無論是最遠的向下遞歸尋路, – 2016-07-01 19:31:46
kayleeFrye_onDeck,它將把源代碼目錄的子文件夾在目標目錄中的子文件夾,如果刪除,源目錄的所有子文件夾的內容將被放置到目的地目錄。 – 2016-07-01 21:13:37
謝謝,@ drweb86! – 2016-07-01 21:25:05
類似的問題已經在這裏問:http://stackoverflow.com/questions/119271/copy-all-files-and-folders-using-msbuild – joshhendo 2011-02-25 23:07:04