1

在我们的应用程序中,我们有相当多的代码在多个应用程序中使用。该代码是使用 SVN 外部共享的(请参阅问题Multiple apps with common code -- how to approach this?)。为了简化部署,我们创建了独立的可执行文件(没有 DLL)。

问题是我们不仅得到了具有简单功能的通用代码,而且还得到了具有依赖于其他通用代码的功能的代码。例如:

  • 模块 A 包含通用功能 A
  • 模块 B 包含通用功能 B
  • 模块 X 包含通用功能 X,但需要 A 和 B。

在许多情况下,这不仅仅是一些需要另一个模块的模块,而且“如果你有模块 A 和模块 B,那么你需要模块 X 将它们的功能链接在一起”。

由于我们对每个通用代码模块都使用了一个 SVN 外部,因此我们最终会得到一大堆外部。对于很多模块组合,我们还有其他模块:

  • 如果你有模块 A 和 B,你还需要模块 X
  • 如果你有模块 B 和 C,你还需要模块 Y
  • 如果你有模块 A 和 C,你还需要模块 Z
  • ...

虽然 SVN externals 说得很清楚,但是使用起来还是很麻烦的:

  • 如果我们添加依赖于 2 个(或更多)其他模块的功能,我们经常需要创建新模块
  • 如果添加了新模块,我们经常需要更改所有应用程序的外部
  • SVN 更新耗时越来越长

是否有任何好的模式或技术可以用来使这更容易(或更快,......)?例如:

  • 如果模块 A 确实存在,则使用 #define 和 #ifdef 仅包含依赖于模块 A 的代码(我们在 15 年前曾经这样做,但我不喜欢这种方法)
  • 递归外部(存在吗?)
  • DLL的东西?(尽管这可能只会使问题变得更糟)
  • ...

还有其他建议吗?

4

0 回答 0