繁体   English   中英

TFS/msbuild,构建项目引用

[英]TFS / msbuild, building project references

我正在努力让 Azure Devops Server 2019(本地)来构建我的复杂项目设置。

我有多种解决方案可以构建各种 BizTalk 应用程序。 其中一些解决方案引用了其他解决方案/存储库中的一些项目。 这在 Visual Studio 中工作正常(假设每个人都将他们的存储库命名为默认值,他们这样做)。

为了自动化这个构建,我创建了一个按顺序构建每个解决方案的多阶段构建管道。

虽然解决方案 1 将成功构建,但对于解决方案 2,msbuild 任务将不会引用已作为解决方案中的项目引用包含在内的项目的输出。

这似乎是因为这些引用的项目没有标记为构建 - 因为如果没有它们反过来在主要解决方案中引用其他项目等,它们将无法构建自己。

所有内容捆绑到一个大的超级解决方案文件中是不可行的。

我想让 msbuild /reference 已经在上一步中构建的项目,因为它们被包含为项目引用。 但是 msbuild 是一个复杂的野兽,我无法找到实现这一目标的方法。

我想要实现的目标甚至可能实现吗? 有人能指出我正确的方向吗?

TFS/msbuild,构建项目引用

这是一个关于不同 Repos 中项目引用的已知问题,但不幸的是它没有最佳答案。 因为最好的解决方案始终是拥有一个存储库。

Git 将文件视为整个存储库的内容,而不是文件的集合。 因此,这很难做到。 作为解决方法,您可以考虑使用Git SubmodulesGit Subtree

从这里检查详细信息:

Git 和 Visual Studio 项目参考

另外,我们现在使用的解决方案是将共享代码放在NuGet包中。 然后,您可以使用来自任何存储库的包,并且您不必执行任何不稳定的 git 设置并保持访问控制。

希望这可以帮助。

我终于重新审视了这个并做了一些更多的实验。

我可以看到,让 TFS/msbuild 引用其他项目输出的唯一方法是在要构建的解决方案构建配置中标记它们。

现在,如果您在 Visual Studio 中执行此操作并尝试构建包含来自另一个解决方案的项目的解决方案,那么如果尚未完全构建先前的解决方案(因为尚未构建其他链式依赖项),则构建将失败。 这是有道理的。

但是使用 TFS/msbuild,构建将成功。 据我所知,有一些魔法正在发生,以确保以某种方式解决所有解决方案之间的依赖关系。 这可能是运气,也可能是特定行为(到目前为止它对我有用)。

问题当然是它与 Visual Studio 不兼容。 所以我在每个解决方案文件中都有一个额外的“构建”定义设置,所有项目都设置为构建。

这似乎是管理许多相互关联的解决方案而没有一个大的解决方案的最简单方法。

似乎 msbuild 已更改为仅引用项目引用,并且您可以通过在运行 msbuild 时将属性OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration设置为 true 来将其还原为引用所有引用。

来源: https : //stackoverflow.com/a/25144169

已经确认这有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM