在线构建 TFS 后如何访问工件文件夹?

Posted

技术标签:

【中文标题】在线构建 TFS 后如何访问工件文件夹?【英文标题】:How to access artifacts folder after build in TFS online? 【发布时间】:2017-06-17 04:48:27 【问题描述】:

PreInfo:我将 .net core web api (vs2015) 与普通项目混合在一起。

我已经花了将近 2 天的时间来让它工作和搜索,并尝试了我能想到的所有东西,但我就是无法在 TFS 中在线获得构建和发布来一起玩。

构建(发布工件步骤)显示“目录 'D:\a\1\a' 为空。不会添加任何内容来构建工件'drop'。

但是“运行点网”步骤说

"发布到 D:\a\1\s\Operator\MobileService\root\MobileService\src\AMP.Operator.MobileService\bin\release\net452\win7-x64\publish"

...所以它一定是在某个地方发行版可以拾取它,但无论我尝试什么我都无法拾取它。

这是我的构建设置

dotnet 运行

出版

和 $(System.DefaultWorkingDirectory)/MobileService-Dev 请注意我已经尝试了构建中 $(build.artifactstagingdirectory) 的每个组合来发布,但我确定这一点应该指向构建的发布文件夹

我非常希望有人能指出我的解决方案。我只是无法理解完成这项工作有多难..

【问题讨论】:

用我的解决方案尝试后结果如何? 【参考方案1】:

在您的构建定义中,我建议添加一个Copy Files 步骤,该步骤将在您运行Publish Artifact 步骤之前将您的构建工件从您的msbuild 结果复制到构建的工件暂存目录。

源文件夹:$(Build.SourcesDirectory) 内容:**\bin\$(BuildConfiguration)\** 目标文件夹:$(Build.ArtifactStagingDirectory)

我假设$(BuildConfiguration) 变量是根据您的定义自定义的,可能是DebugRelease。我不确定 Run dotnet 步骤究竟做了什么,但我设置的这个构建定义正确地发布了我的构建工件。我正在运行的 Publish Build Artifacts 步骤与您的步骤相同,但启用的唯一控制选项是 Enabled

我也在 TFS 2015 更新 2 上运行。

【讨论】:

我认为我的问题完全与 dotnet 核心有关.. 你的方法不起作用我很抱歉。现在我在看他的docs.microsoft.com/en-us/aspnet/core/publishing/… @Sturla 感谢您的反馈。我还注意到您的 dotnet 工具的工作目录是 TFS 路径而不是 real 路径。我不确定这是故意的还是可能会引起问题。它可能是一个参数来代替你的工作目录。 是否应该将构建结果“按定义”放置到工件文件夹中,而无需手动复制任何其他步骤? @SerG 如果您正在谈论复制到$(Build.ArtifactStagingDirectory),这不会自动完成。构建的结果(bin 和 obj 文件夹)保留在源文件夹中(s 文件夹又名 $(Build.SourcesDirectory))。如果您的目标文件夹是 ArtifactStagingDirectory(a 文件夹)并且您没有对其进行某种形式的复制,则不会发布任何文件。可以在here 找到有关此变量的文档 我已经拿到了。看起来逻辑从 2015 年到 2017 年 TFS 发生了变化,或者我只是感到困惑。【参考方案2】:

如果您只是想看一下文件,可以下载这些文件。进入build,点击Artifacts选项卡,然后下载如下图:

【讨论】:

我看不到图像,但使用复制任务和发布任务分开(复制和发布已被弃用)工件选项卡不再显示。有什么办法让它出现吗?【参考方案3】:

您需要为 dotnet publish 命令指定输出参数 (--output/-o)。 参数:

Publish -c $(BuildConfiguration) -o $(Build.ArtifactStagingDirectory)

顺便说一句:你说“运行点网”步骤说“发布到 D:\a\1\s....”,文件在 D:\a\1\s,D:\ 中没有文件a\1\a(一个是s,另一个是a)。

【讨论】:

我的构建工件步骤说 2018-04-25T19:30:24.0964490Z Upload 'C:\Users\userrr\Downloads\vsts-agent-win7-x64-2.122.1_work\4\s'到文件容器:'#/917/drop' 我在哪里可以找到路径'#/917/drop' 它不在我的代理或 TFS 下?有什么想法吗?

以上是关于在线构建 TFS 后如何访问工件文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

TFS 2015 发布管理 - 工件类型:文件共享错误:System.IO.FileNotFoundException:找不到指定的文件

如何在 TFS Linux 代理中下载工件?

TFS 2015 更新 3 Vnext 构建定义复制除父项目之外的所有工件

TFS/Azure DevOps 上的发布工件的位置在哪里

使用 TFS Build Server 2015 转换 web.config

如何从詹金斯工作区将EAR签入到TFS