Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TFS 2017生成没有文件夹结构的副本文件?_Tfs_Tfsbuild - Fatal编程技术网

TFS 2017生成没有文件夹结构的副本文件?

TFS 2017生成没有文件夹结构的副本文件?,tfs,tfsbuild,Tfs,Tfsbuild,在我的TFS 2017构建定义中,我试图将一个具有特定名称(包)的文件夹复制到我的工件目录中。我只对特定文件夹本身感兴趣,对它的父文件夹不感兴趣 有人能告诉我该怎么做吗 复制文件任务的当前配置: 来源:$(agent.builddirectory) 目录:*\Package*** 目标文件夹:$(build.artifactstagingdirectory)\MyArtifact 这将导致以下folderstructure,而我唯一感兴趣的是Package文件夹: \MyArtifact\fol

在我的TFS 2017构建定义中,我试图将一个具有特定名称(包)的文件夹复制到我的工件目录中。我只对特定文件夹本身感兴趣,对它的父文件夹不感兴趣

有人能告诉我该怎么做吗

复制文件任务的当前配置: 来源:$(agent.builddirectory) 目录:*\Package*** 目标文件夹:$(build.artifactstagingdirectory)\MyArtifact

这将导致以下folderstructure,而我唯一感兴趣的是Package文件夹: \MyArtifact\folderX\s\folderY\folderZ\folderA\Package

使用TFS2017update1及以上版本的VSTS,您只需在中的“高级”选项下选中“展平文件夹”。目前最简单的解决方案

这将展平文件夹结构并将所有文件复制到 指定的目标文件夹

不确定您是否正在使用2017版本,并且没有展平文件夹选项。如果只想复制没有文件夹结构的文件,则需要指定复制根目录。您可以使用
$(Build.StagingDirectory)
作为此操作的目标。然后将发布任务
$(Build.StagingDirectory)
一起用作复制根目录,并将从该根目录到放置目录的所有内容发布

详细步骤和屏幕截图请查看Eddie在这个问题上的回答:

如果“包”的相对路径没有改变,您可以在“源”中指定详细路径以实现您想要的功能

例如,配置“复制文件”任务:

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

目录至:
**

目标文件夹到:
$(build.artifactstagingdirectory)\MyArtifact\Package


您将获得所需的文件夹结构。

虽然所有答案在某种程度上都是正确的,但这并不是我想要实现的。 我最终创建了自己的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

谢谢你的建议,帕特里克。我确实有更新1,但我不想展平文件夹,因为我的“包”文件夹包含WCF项目的输出:一些.svc位于顶层,一个带有dll的bin文件夹。我想保留以保留此结构…@BenThaens如果可以使用选项2,只需将文件复制到中间路径,如
Build.StagingDirectory
,而不是直接使用
builddirectory