我正在努力让Azure Devops Server 2019 (on prem)构建我的复杂项目设置。
我有多个构建各种BizTalk应用程序的解决方案。其中一些解决方案引用了其他解决方案/存储库中的一些项目。这在Visual Studio中工作得很好(假设每个人都将自己的repos命名为默认值,他们确实这样做了)。
为了自动化这个构建,我创建了一个多阶段构建管道,它按顺序构建每个解决方案。
虽然解决方案1将成功生成,但当涉及到解决方案2时,msbuild任务将不会引用已作为项目引用包含在解决方案中的项目的输出。
这似乎是因为这些引用的项目没有标记为构建-因为没有它们,它们就不能构建自己,反过来在主解决方案中引用他们的其他项目,等等。
将所有内容捆绑到一个大的超级解决方案文件中是不可行的。
我希望msbuild来/reference的项目,已经在上一步中已经建立,因为每被包括为项目引用。但msbuild是一头复杂的野兽,我想不出一种方法来实现这一点。
我想要实现的目标有可能实现吗?有谁能告诉我正确的方向吗?
发布于 2020-02-23 02:20:38
msbuild似乎已更改为仅引用项目引用,并且您可以通过在运行msbuild时将属性OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration
设置为true来将其恢复为引用所有引用。
来源:https://stackoverflow.com/a/25144169
已经确认这是可行的。
发布于 2019-06-22 21:28:54
我终于重新审视了这一点,并做了更多的实验。
在我看来,让TFS/msbuild到/reference其他项目输出的唯一方法是在解决方案构建配置中将它们标记为build。
现在,如果您在Visual Studio中执行此操作,并尝试构建一个具有来自另一个解决方案的项目的解决方案,则如果前一个解决方案尚未完全构建,则构建将失败(因为其他链接依赖项将不会构建)。这是有道理的。
但是使用TFS/msbuild,构建将会成功。据我所知,有一些魔术正在发生,以确保所有解决方案之间的依赖关系以某种方式得到解决。这可能是运气,可能是特定的行为(到目前为止,这对我来说是有效的)。
当然,问题是它与Visual Studio不兼容。因此,我在每个解决方案文件中都有一个额外的“构建”定义设置,其中所有项目都设置为构建。
这似乎是管理大量相互关联的解决方案的最简单方法,而不需要一个大的解决方案。
https://stackoverflow.com/questions/55109633
复制相似问题