2017-10-09 270 views
2

在我的TFS 2017構建定義中,我試圖將具有特定名稱(包)的文件夾複製到我的Artifacts目錄。我只對特定的文件夾本身感興趣,而不是它的父文件夾。TFS 2017構建複製文件沒有文件夾結構?

有人能告訴我應該如何做這項工作嗎?

的文件複製任務當前配置: 來源:$(agent.builddirectory) 內容:** \包裝*** 目標文件夾:$(build.artifactstagingdirectory)\ MyArtifact

這導致而我唯一的興趣以下folderstructure是包文件夾: \ MyArtifact \ folderX \ S \ folderY \ folderZ \ folderA \包

回答

3

隨着TFS2017update1以上,VSTS,你可以簡單地檢查Copy Files Task的高級選項下展開文件夾。現在最簡單的解決方案。

enter image description here

這將壓扁的文件夾結構和所有文件複製到指定的 目標文件夾。

不知道,如果你是在2017年發行版的工作,並沒有拼合文件夾選項。您需要指定複製根目錄如果您想要僅複製文件而沒有文件夾結構。您可以使用$(Build.StagingDirectory)作爲此目標。之後,使用發佈任務$(Build.StagingDirectory)作爲複製根目錄,並將所有從此根目錄發佈到該目錄。

詳細步驟和屏幕截圖,請看看答案從埃迪這樣一個問題:Copy one file in target directory on deploy from visual studio team services

+0

謝謝你的建議帕特里克。我確實有更新1,但是我不想壓扁這些文件夾,因爲我的'Package'文件夾包含WCF項目的輸出:頂級的一些.svc和帶有dll的bin文件夾。我想保留以保持這種結構... –

+0

@BenThaens如果是這樣你可以使用選項2,只需將結構和一些沒有結構的文件複製到像Build.StagingDirectory這樣的媒體路徑,而不是直接使用'builddirectory' –

0

如果相對路徑爲「包」不會改變,你可以在「源」指定詳細的路徑實現你想要的功能。

例如,配置文件複製任務:

源文件夾:$(agent.builddirectory)\folderY\folderZ\folderA\Package

內容到:**

目標文件夾到:$(build.artifactstagingdirectory)\MyArtifact\Package

你會得到你的文件夾結構想。

0

雖然所有的答案在某些方面都是正確的,但這不是我想達到的。 我結束了創建我自己的PowerShell腳本複製包文件夾和它的內容到臨時目錄:

$BasePath = [System.IO.Path]::GetDirectoryName("$(SolutionPath)") 
$Search = "PackageTmp" 
$Destination = "$(Build.StagingDirectory)" 

Get-ChildItem -Path $BasePath -Filter $Search -Directory -Recurse | Copy-Item -Destination {Join-Path $Destination $(ArtifactName)} -Recurse -Force