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

Posted

技术标签:

【中文标题】我怎样才能始终如一地自动化,使用 TFS vNext 构建步骤,构建我们的开发团队使用 Visual Studio 工作的任何解决方案文件?【英文标题】:How can I consistently automate, using TFS vNext build steps, building whatever solution files our development teams get working using Visual Studio? 【发布时间】:2020-04-28 12:05:49 【问题描述】:

开发人员使用 Visual Studio (VS) GUI 来开发他们的解决方案,并使用解决方案文件 (.SLN) 构建他们的所有项目。使用 vNext 的构建团队必须使用 MSBuild 而不是 devenv.exe(Visual Studio 可执行文件)来自动化这些构建。这是一个严重且长期存在的问题,因为 MSBuild 不仅无法构建多种项目类型,而且构建顺序以完全不同且复杂的方式定义。

Microsoft 的一些建议 (https://docs.microsoft.com/en-us/archive/blogs/msbuild/incorrect-solution-build-ordering-when-using-msbuild-exe) 是切换到每个 .*proj 文件中的显式依赖项,并删除 .SLN 文件中的所有依赖项规范。这听起来像是一个从未在相对无能为力的构建团队中工作过的人试图让开发团队:

做很多他们认为浪费时间的额外工作,然后 改变他们做事的方式

构建团队需要的是一种自动化 VS 允许开发团队构建的任何东西的方法。如果给 VS 一个 SLN 来构建,那么 vNext 构建需要能够以相同的方式使用相同的 SLN。相反,vNext 目前只提供 MSBuild 作为构建工具。 MSBuild 比 devenv 有更多的选项,如果它可以使用 SLN 以与 VS 相同的方式管理依赖项,并且可以升级以构建所有相同的项目类型,那就太好了。

PatrickLu-MSFT 在Build project using devenv.exe in TFS 15RC1 Build Server 引用了一些前瞻性努力,以增强 vNext 构建步骤以允许使用 devenv 代替 MSBuild,但这些努力似乎已被放弃。

也许有人开发了一个自定义的 vNext 构建步骤来使用 devenv 构建?

【问题讨论】:

【参考方案1】:

这是一个您可以参考的现有扩展,它在您的 TFS/VSTS 实例中提供了一个构建任务,允许您使用 DevEnv.com (Visual Studio) 构建您的项目:

https://marketplace.visualstudio.com/items?itemName=mmajcica.devenv-build

如果您想自动使用 TFS/DevOps 构建我们的开发团队使用 Visual Studio 工作的任何解决方案文件,您可以在构建管道中设置 CI trigger,当解决方案在本地构建成功时,您可以签入/提交更改,并触发 TFS/DevOps 构建。

【讨论】:

以上是关于我怎样才能始终如一地自动化,使用 TFS vNext 构建步骤,构建我们的开发团队使用 Visual Studio 工作的任何解决方案文件?的主要内容,如果未能解决你的问题,请参考以下文章

TFS 2017 升级 SQL Server 始终开启

在 cmake 中,我怎样才能始终执行一个进程? (或从 add_custom_command 捕获标准输出)

我怎样才能挂钩到 Perl 的打印?

我怎样才能简单地使用这种数字格式验证正则表达式?

我怎样才能更好地存储变量?

我怎样才能更好地有条件地渲染我的组件?