【问题标题】:TFS build otputs wasn't copied to drop folderTFS 构建 otputs 未复制到放置文件夹
【发布时间】:2014-02-02 17:41:43
【问题描述】:

我有 MyProj.proj 文件,在我的 tfs 构建配置中用作“要构建的项目”。

C++、C# 和 VB.Net 解决方案在 MyProj.proj 中列出。每个解决方案都有相同的输出目录 - Bin 文件夹 (C:\Builds...\MyProject\Bin),因此所有构建工件(dll、exe 文件、..)在成功构建后都放置在那里.

当 tfs build 成功完成时,我想将 C:\Builds...\MyProject\Bin 复制到其他框的放置文件夹。为此,我检查了 Copy build output to the following drop folder 复选框并指定了 UNC 路径 \\OtherBoxFromMyNetwork\BuildArtifacts

但这对我不起作用。我看到根据内部版本号命名的文件夹是在放置文件夹中创建的: \OtherBoxFromMyNetwork\BuildArtifacts\MyProject\Build_Number ,但它只包含 logs 文件夹,因此 Bin 目录没有被复制。为什么?

【问题讨论】:

    标签: msbuild tfsbuild


    【解决方案1】:

    TFS Build 会覆盖 OutputPath MSBuild 属性(C# 和其他项目默认具有该属性)。这会强制输出进入 TFS Build Server 上的不同目录,并且正是这个目录被复制到 Build Drops。构建服务器工作目录中的文件夹结构是这样的:

    C:\Builds\1\TeamProjectName\BuildName\src\
    C:\Builds\1\TeamProjectName\BuildName\bin\
    

    您的代码和 proj 和 sln 文件将位于 \src\ 文件夹下,但 TFS Build 将所有输出重定向到 bin 文件夹,该文件夹最后复制到 Build Drops。注意:bin 文件夹与典型的 bin\debug 文件夹不在同一位置。

    【讨论】:

    • Dylan,我看到 C:\Builds\1\TeamProjectName\BuildName\bin 在我的情况下是空的。这就是为什么最后没有将任何内容复制到 Build Drops 的原因。我所有的二进制文件都存储在这里:C:\Builds\1\TeamProjectName\BuildName\src\Bin 我认为在每个解决方案中更改 OutputPath 并不是一个好主意。我应该将 C:\Builds\1\TeamProjectName\BuildName\src\Bin 的内容复制到 C:\Builds\1\TeamProjectName\BuildName\bin 吗?这是正确的做法吗?
    • 不,这不是正确的方法。正确的方法是确保您的项目尊重 OutputPath MSBuild 属性的值并将输出放置在正确的位置。默认情况下,C# 项目执行此操作,您必须更改了某些内容。我怀疑既然您说您有一个 .proj 文件,那么您正在使用自定义 MSBuild 文件,如果是这样,请确保它接受并使用 OutputPath 属性。
    • TF 为此使用 OutDir 而不是 OutputPath。更多关于这两者之间的区别:blogs.clariusconsulting.net/kzu/outdir-vs-outputpath.
    猜你喜欢
    • 2014-09-23
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多