【问题标题】:TFS2015 Check-In Copy File CI StepTFS2015 签入复制文件 CI 步骤
【发布时间】:2026-02-07 11:10:01
【问题描述】:

是否可以在 TFS2015 中创建一个持续集成“构建”步骤,将签入的文件简单地复制到某个文件共享位置?我想将任何签入到 TFVC 项目存储库的 .xml 文件自动复制到指定的文件共享位置?

似乎新的 TFS2015 构建系统应该可以实现。

【问题讨论】:

    标签: build-process tfs-2015


    【解决方案1】:

    您似乎希望将所有 XML 文件都视为构建工件。为此有一个特殊的构建步骤,称为“发布构建工件”。下图说明了它可能适合您的情况:

    【讨论】:

    • 对不起严。这并没有给我我需要的东西。如果不与项目或解决方案文件的构建相关联,则发布构建工件构建步骤不会执行任何操作。其中任何一个都具有文件的存储库映射,以在代理上本地获取源。在签入到 TFVC 时进行简单的文件复制之前,我不想付出时间来成功构建解决方案。还有其他想法吗?
    • 您不必构建解决方案。如果您只在定义中添加一个“发布构建工件”步骤,它将首先将源代码抓取到代理(您不能禁用此步骤),但随后它不会尝试编译它,它只会运行您的步骤并发布您的指示。
    • 严,你是对的,谢谢。我能够让 Publish Build Artifacts 步骤工作。但是,我发现了其他问题。同步存储库时,它会尝试删除工件目录但不能。其中的文件是只读的,因此删除失败并出现“拒绝访问”错误。我可以解决的唯一方法是运行“attrib.exe”命令来更改文件上的只读标志,这只能在构建步骤结束时运行,而不是作为第一步。看起来像一个错误。
    • 此外,当 CI 构建从签入的 .xml 文件开始时,我有时会收到“构建已排队等待开始”,并且构建服务器代理运行可能需要几分钟构建。这似乎也是一个错误。
    • @Mike,当你说它试图删除工件目录时,你指的是哪个目录?它不应该触及文件共享,对吧?如果确实如此,我会感到非常惊讶。
    【解决方案2】:

    是的,可以通过添加 PowerShell 构建步骤来实现。您需要定义 PowerShell 脚本以将 xml 文件复制到共享文件夹。

    一种简单的方法是在 PowerShell 文件中调用 xcopy.exe 命令:

    c:\windows\system32\xcopy.exe "sourcefile" "\\sharedfoler"    
    

    【讨论】:

    • 谢谢,维姬。这看起来像是我的问题的另一种解决方案。我将继续了解这个新的 TFS2015 构建系统。