【问题标题】:How do I manage assembly versions in a multiple module / customer scenario?如何在多模块/客户场景中管理程序集版本?
【发布时间】:2011-02-10 19:07:57
【问题描述】:

我需要一些关于管理程序集和版本及其源代码控制的指导。

首先,关于应用程序的一些背景知识。该应用程序是一个 ERP 类型的系统,多个客户可以在其中运行各种模块;他们中有一些 标准和/或其中一些专门为客户定制。每个模块实现特定的业务功能或其变体。 理由是这些模块可以轻松互换/定制,而不会影响其他模块或需要重建。

应用程序基于应用程序外壳、应用程序核心和运行时加载的模块。所有客户都使用 应用程序外壳和核心,然后是任意数量的模块。目前我有大约 70 多个模块。

应用程序核心由 2 个程序集组成。首先是服务/业务逻辑、数据访问层、数据对象等。 二是所有基础的UI表单、对话框等。

每个模块都作为它们自己的程序集实现(作为解决方案中的 VS 项目)。这些项目中的每一个都引用了 2 个核心 组件。这些模块程序集在应用程序启动时在运行时加载。因此,要更改模块,可以简单地 更换组件。主应用程序外壳创建应用程序核心类实例。

现在的场景是这样的: - 当我更改一个模块时,它的程序集版本会发生碰撞。

  • 当我更改核心组装方法的实现(即不更改任何类签名)时,我不需要 重建依赖模块,因此它们的版本保持不变。但是,核心程序集版本会受到影响。

  • 当我将属性或方法添加到核心类时,我也不需要重建依赖模块以及它们的版本 保持原样。再次,核心程序集版本被颠簸。

  • 但是,当我更改核心类的签名时,我需要重新构建所有依赖程序集。我应该撞每个模块吗 这种情况下的版本?

版本控制

看到每个模块都是一个单独的项目,它们在 VSS 树中都有不同的根元素。所以我应该标记每个模块 节点与版本?

管理版本依赖关系的最佳方法是什么? Excel?

此外,每个客户的部署现在都是一个版本(带有编号),但带有一组模块,每个模块都有各自的程序集版本。 我到底要如何跟踪这个?

我将不胜感激有关版本控制以及必须管理此模块目录的理念的任何建议/cmets

【问题讨论】:

    标签: module assemblies versioning


    【解决方案1】:

    第 1 步 - 停止使用 VSS 并使用真正的版本控制系统,例如 Subversion、Mercurial 或 Git,让您可以有效地使用分支和标签。在管理不同的设置和依赖项时,这将有助于 ton

    第 2 步 - 遵循 Semantic Versioning 指南,并针对每个模块或版本化项目执行此操作。这将为依赖于特定模块的其他元素提供一种简单的方法来确定 范围 其依赖模块之一的下一个版本

    一般来说,模块的版本应该只根据语义版本控制指南进行更改,这些指南完全关注模块的外部 API 如何更改。所以,如果依赖模块的版本发生变化,但我们正在处理的模块的外部 API 没有变化,你会增加补丁版本号(例如。1.12.5 -> 1.12.6

    如果您在版本控制系统中使用标签和分支,每个部署的版本一个,您将能够轻松跟踪什么取决于什么,因为它记录在版本控制历史中。在不同的分支机构拥有不同的客户可为您提供所需的所有灵活性,并且您无需跟踪任何额外的内容,因此没有额外的开销。

    【讨论】:

      猜你喜欢
      • 2021-07-27
      • 2014-03-03
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多