在线构建 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)
变量是根据您的定义自定义的,可能是Debug
或Release
。我不确定 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 2015 更新 3 Vnext 构建定义复制除父项目之外的所有工件