从visual studio团队服务部署复制目标目录中的一个文件

Geo*_*yev 17 tfsbuild azure-devops azure-pipelines

我正在使用VSTS作为构建服务器,并且在构建时我想将bin文件夹内容复制到目标的根目录,以及将另一个文件夹中的自定义文件复制到此目标.MSDN建议我使用minimatch模式,但它使用子目录结构复制文件.我对恢复结构不感兴趣.

例如,我得到这个文件夹结构:

Project
    MyProjectFiles
    bin
        x86 (it's build configuration)
            Project.exe
    Other project files
    Project.sln
SomeScrips
    script1.ps1
Run Code Online (Sandbox Code Playgroud)

但我想收到这个文件夹结构:

Project.exe
SomeScripts
    script.ps1
Run Code Online (Sandbox Code Playgroud)

我可以根据我的要求使用哪种迷你匹配模式?

Edd*_*SFT 26

如果只想复制没有文件夹结构的文件,则需要指定复制根目录.由于project.exe与script.ps1文件位于不同的路径,因此您需要将它们复制到不同的复制任务中.

请按照以下步骤操作:

  1. 添加"复制文件"步骤以复制"project.exe".设置如下: 在此输入图像描述
  2. 添加"复制文件"步骤以复制"SomeScripts"文件夹.设置如下: 在此输入图像描述
  3. 添加"复制和发布构建工件"步骤以将这些文件复制到"删除".设置如下: 在此输入图像描述

现在你应该在drop文件夹中得到以下内容:

Project.exe
SomeScripts
    script.ps1
Run Code Online (Sandbox Code Playgroud)

  • 每天晚上睡觉前,我都会从床头柜上拿出一小块雕像,然后默默祈祷有人会在"复制文件"操作中添加"扁平层次结构"选项.这样的选择将在我的世界中恢复很多理智.AFAICT我现在不得不求助于PowerShell进行文件复制.CopyFiles看起来未完成. (3认同)

igo*_*024 7

"复制文件"步骤的"高级"部分中的"拼合文件夹"选项.

如果您正在使用TFS Online(Visual Studio Online)并且不需要复制文件夹结构,请使用构建定义中"复制文件"步骤的"高级"部分中的"拼合文件夹"选项


Pas*_*ger 4

借助新的基于 Web 的构建系统,您可以在一个步骤中使用多种模式。因此,您可以针对您的情况执行以下操作:

Project\bin\x86\Release\project.exe
SomeScripts\**\*
Run Code Online (Sandbox Code Playgroud)

或者,如果您在变量(例如BuildPlatform/ BuildConfiguration)中拥有构建平台和配置,并且您也在构建步骤中使用它们,则可以在模式中使用它们:

Project\bin\$(BuildPlatform)\$(BuildConfiguration)\project.exe
SomeScripts\**\*
Run Code Online (Sandbox Code Playgroud)

如果您希望project.exe位于根目录而不是结构中,则需要Copy Task首先使用 a 将文件暂存到所需的结构中。您可以将$(Build.StagingDirectory)其用作目标。然后使用发布任务作为$(Build.StagingDirectory)复制根并将所有内容从该根发布到 drop。

  • 不,它仍然是按文件夹结构复制 (2认同)