【发布时间】:2019-09-04 20:39:34
【问题描述】:
在我尝试在 Jenkins 中为我的项目实施 CI 时,我遇到了这个问题,这很可能与我组织这些项目的方式有关。这可以简化为:
- 我有 2 个解决方案:
LegacyApp.sln和ModernApp.sln - 这些解决方案都包含一组经常修改的项目。这些是共享项目。
-
LegacyApp解决方案还包含旧版控制台应用程序项目。这不再开发了。 -
ModernApp解决方案还包含 GUI 应用程序项目(例如 WPF)。这正在开发中,并且经常与共享项目一起更改。
(注意:现实生活中大约有 20 个共享项目,每个解决方案包含 10-15 个独特的项目)
我使用ModernApp.sln 进行我需要的更改。有时这些更改对LegacyApp.sln 造成了破坏,但直到每晚构建失败时我才意识到这一点(因为只有每晚构建处理LegacyApp.sln)。
问题是:处理此问题的最佳方法是什么,以便在我推送更改后 CI 构建失败?
显然,我必须在 CI 构建中包含 LegacyApp 项目,但是如何?我能想到的选项并不完美:
- 继续使用这 2 个解决方案并配置 CI 构建以按顺序构建它们。当我添加一个新的共享项目时,这不会扩展,因为我必须更新这两个解决方案。
- 将 2 个解决方案合并为一个称为
AllApps.sln的解决方案,其中包括共享项目、LegacyApp的独特项目和ModernApp的独特项目。缺点是遗留应用程序项目一直加载到 IDE 中(而不是使用不包含它们的ModernApp.sln)。 - 继续使用这 2 个解决方案,但让构建在构建服务器上的构建时“合并”它们,以便它自动创建上述
AllApps.sln(或等效的东西)作为 CI 构建使用的临时文件.我不确定这是否可能。
想法?
【问题讨论】:
标签: .net msbuild continuous-integration