【问题标题】:Azure Pipeline copy files from multiple source folder into single destinationAzure Pipeline 将文件从多个源文件夹复制到单个目标
【发布时间】:2019-09-01 10:43:34
【问题描述】:

我正在研究 Azure DevOps 构建管道。我有一个 Server.sln,其中有学生 2 个 C# 项目,例如 Error.csprojLog.csproj

我的文件夹结构如下

Code (folder) 
   Error (folder) 
      Error.csproj
   Log (folder) 
      Log.csproj
   Server.sln

Staging (folder) 
 Error (folder) 
 Log (folder) 

我有 Azure Pipeline,它在调试模式下有一个生成任务,生成 Error.dll in Error\bin\debug folderLog.dll into Log\bin\debug folder。 之后我想复制 Error.dll from Error\bin\debug into Staging\ErrorLog.dll from Log\bin\debug folder into Staging\Log

为此,我使用 2 复制文件任务

一个复制Error.dll,另一个复制Log.dll。

是否可以将这两个复制任务合二为一?

提前致谢。

【问题讨论】:

  • 如果您的项目相互引用,将自动复制相应的程序集。如果它们不相互引用,则它们无需位于同一文件夹中。你能更详细地解释一下这个问题吗?
  • Daniel... 是的,我的错误项目引用了 Log 项目,在我的 Error\bin\debug 中有 Error.dll 和 Log.dll。我还考虑过从 Error\Bin\debug 复制 Error.dll 和 Log.dll。但我试图查看是否可以在一个复制文件任务中从 Error\Debug\Bin 复制 Error.dll 和从 Log\Bin\Debug 复制 Log.dll...多个源路径....
  • 从包含两者的文件夹中复制。没有理由把事情复杂化。

标签: azure-devops azure-pipelines file-copying


【解决方案1】:

根据您的文件夹结构,您可以通过这种方式(在 YAML 中)从 2 个路径复制 2 个文件:

- task: CopyFiles@2
  displayName: 'Copy Error and Log dll's'
  inputs:
    SourcesFolder: '$(Build.SourcesDirectory)'
    Contents: |
     Code/Error/bin/Debug/Error.dll
     Code/Log/bin/Debug/Log.dll
    TargetFolder: '$(Build.ArtifactsStagingDirectory)' # Or different folder

但您只能复制到一个目标,并且在目标文件夹中,您将拥有“内容”中指定的所有文件夹:

- c:/agnet/_work/a/Code
                       - Error/bin/Debug/Error.dll
                       - Log/bin/Debug/Log.dll

如果您想复制到 2 个文件夹(在您的情况下为 Error & Log)或者您只想复制 dll(不包括包含它们的文件夹),您必须使用 2 个复制任务,或者您可以使用 PowerShell 脚本进行复制然后您只能使用 1 个任务。

【讨论】:

    猜你喜欢
    • 2021-02-18
    • 2017-03-31
    • 2021-03-21
    • 2023-03-11
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    相关资源
    最近更新 更多