我创建了一个小项目[0]来在受控环境中重现错误。事实上,我正在使用jenkins构建我的项目,一个大项目,我想做一些并行构建。让我以图形方式制作
[MyBasicPackage] -----> [MyPackageTester] ------> [MyBasicApp]
.
.
+-----> [...]
+-----> [...]
这是我在[0]上制作的组织,我在弹簧容器上注册了一个 TMyUnit ( MyBasicPackage ),以进行测试。我构建它并生成.dcu,.bpl等。 第二阶段我构建了 MyPackageTester ,需要 MyBasicPackage 。最后,我构建了需要 MyPackageTester 的应用。到目前为止一切都很好。
当我尝试构建 MyBasicPackage 时,请说 PC-00 ,获取工件并尝试构建 MyPackageTester < strong> PC-06 (相同的arch,相同的操作系统,相同的IDE,相同的spring4d版本),并出现一个很好的错误:
Unit TMyUnit was compiled with a different version of Spring.Container.Registration
所以,我在两台机器上更新了我的spring4d( PC-00 和 PC-06 )并构建它们。运行...并出现同样的错误。 检查库路径选项( C:\ Program Files(x86)\ Embarcadero \ Studio \ 14.0 \ Componentes \ spring4d \ Library \ DelphiXE6 \ Win32 \ Debug ),删除dcu文件并再次构建它们两台机器,同样的错误。 将dcu文件从 PC-00 复制到 PC-06 ,以避免任何类型的系统配置,并出现同样的错误。
可能我正在尝试做一些迄今为止无法做到的事情。我用谷歌搜索了几天没有运气。
有什么想法吗?
请随意分叉或拉取请求示例;)
此致
答案 0 :(得分:2)
在您的情况下,您需要使用Spring.Core运行时包进行构建。这不仅可以防止此错误,而且您的代码实际上也可以正常工作。
如果不这样做,那么所有模块都将拥有您正在使用的GlobalContainer实例的版本,并且没有任何工作。
答案 1 :(得分:2)
Maybe one solution is put all your libraries in a centralized repository and pull them to compile your projects. It should resolve the different version error.