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

Posted

技术标签:

【中文标题】TFS 2015 更新 3 Vnext 构建定义复制除父项目之外的所有工件【英文标题】:TFS 2015 Update 3 Vnext build definition copies all artifacts except parent project 【发布时间】:2017-01-27 00:47:29 【问题描述】:

尝试使用 MSBuild 14.0 vNext 构建多项目解决方案,并使用以下开关: /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:PackageLocation=$(build.stagingDirectory)

该解决方案包含以下项目: 项目, 项目.数据, 项目.模型, 等等...(共 5 个项目)

构建似乎工作正常,包括测试,有一些警告并且没有错误,但是,放置文件夹包含所有依赖项目的输出,同时省略了项目(父项目)。

多年来一直在谷歌上搜索并尝试不同的配置,我们将不胜感激。

如果有帮助,可以使用日志或日志部分。

【问题讨论】:

在 Publish Build Artifacts 步骤中,您是否将 publish from $(build.stagingDirectory) 设置为您的放置文件夹?您是否检查了构建代理上的 $(build.stagingDirectory) 文件夹? @Tingting0929-MSFT 构建工件步骤是使用默认配置的 Build.SourcesDirectory 到放置文件夹。 agent_work\1\s 目录 (Build.SourcesDirectory) 似乎包含所有 5 个项目的文件。 agent_work\1\a 目录(Build.artifactsStagingDirectory 仅包含来自 5 个项目中的 4 个的文件,drop 文件夹也是如此。 @Tingting0929-MSFT 似乎在构建的“将文件复制到:$(build.artifactstagingdirectory)”步骤中忽略了该项目。日志中列出了所有其他项目,但根本没有提到丢失的项目。在构建服务器上,_work\1\s 填充了整个项目,但是在 CopyFiles 期间它似乎被忽略了。 你能分享整个日志吗? 【参考方案1】:

如果我没有误解,您已经检查了 $(Build.SourcesDirectory) 是否包含您需要的所有 5 个项目,但是“复制文件”步骤并没有将它们全部复制到 $(build.artifactstagingdirectory )。在“复制文件”步骤的“Contents”空白处,输入“*”,表示复制根文件夹中的所有文件。

【讨论】:

感谢您的回复。上例中的 Contents 文件夹实际上是 *\bin\$(BuildConfiguration)*,事实证明这是正确的。无论出于何种原因,当 $(BuildConfiguration) 设置为调试时,尽管构建日志中存在错误,但不会为该项目创建 bin 文件。当 $(BuildConfiguration) 设置为发布时,将为所有项目创建编译的 bin 文件,并且复制步骤工作正常。 @absinc 所以你通过将配置更改为“发布”来解决它。如果是这样,您能否发布您的解决方案作为此问题的答案。 您好,再次感谢您的帮助。我不知道为什么这不构建 bin 文件的调试版本的原因,它似乎在本地工作正常。如果它仍然无法正常工作,我会犹豫将其标记为解决方案...

以上是关于TFS 2015 更新 3 Vnext 构建定义复制除父项目之外的所有工件的主要内容,如果未能解决你的问题,请参考以下文章

更新团队基础 2015 API 中的构建定义

TFS 2015 Build vNext:cURL-FTP-Upload 错误或难以使用

使用 vNext 构建后将内部版本号与 TFS 工作项相关联

vNext 构建和发布管理器

识别 TFS 2015 发布管理中包含的工作项

我怎样才能始终如一地自动化,使用 TFS vNext 构建步骤,构建我们的开发团队使用 Visual Studio 工作的任何解决方案文件?