Module 如何在多模块/客户场景中管理程序集版本?

Module 如何在多模块/客户场景中管理程序集版本?,module,assemblies,versioning,Module,Assemblies,Versioning,我需要一些关于管理程序集和版本及其源代码控制的指导 首先,介绍一下应用程序的背景知识。该应用程序是一个ERP类型的系统,多个客户可以运行不同的模块;其中一些 标准和/或其中一些是专门为客户定制的。每个模块实现特定的业务功能或其变体。 其基本原理是,这些模块可以轻松互换/定制,而不会影响其他模块或需要重建 该应用程序基于应用程序外壳、应用程序核心,然后是运行时加载的模块。所有客户都使用 应用程序外壳和核心,然后是任意数量的模块。目前我有大约70多个模块 应用程序核心由2个程序集组成。第一个是服务/

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

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

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

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

每个模块都作为解决方案中的VS项目实现为自己的组件。每个项目都参考了2个核心 装配。这些模块程序集在应用程序启动时在运行时加载。因此,要更改模块,只需 更换总成。主应用程序外壳创建应用程序核心类实例

现在的情况是: -当我更改一个模块时,它的程序集版本会受到影响

当我更改核心汇编方法的实现时,即不更改任何类签名,那么我就不需要 重建依赖模块,因此其版本保持原样。但是,核心组件版本会受到影响

当我向核心类添加属性或方法时,我也不需要重建依赖模块,因此也不需要重建它们的版本 保持原样。同样,核心组件版本会受到影响

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

版本控制

看到每个模块都是一个单独的项目,它们在VSS树中都有不同的根元素。那么我应该给每个模块贴标签吗 节点的版本

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

此外,每个客户的部署现在都是一个有编号的版本,但有一组模块,每个模块都有各自的组装版本。 我他妈的怎么知道这件事

如果您对版本控制有任何建议/意见,以及必须管理此模块目录的理念,我将不胜感激。第1步-停止使用VSS,使用真正的版本控制系统,如Subversion、Mercurial或Git,它允许您有效地使用分支和标记。当涉及到管理不同的设置和依赖项时,这将有很大帮助

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

一般来说,模块的版本只应根据语义版本控制准则进行更改,语义版本控制准则完全关注模块的外部API如何更改。因此,如果一个依赖模块的版本发生了变化,但我们正在处理的模块的外部API没有变化,那么您将增加补丁版本号,例如1.12.5->1.12.6

如果在版本控制系统中使用标记和分支(每个部署的版本对应一个),您将能够轻松地跟踪什么取决于什么,因为它记录在版本控制历史记录中。在不同的分支机构拥有不同的客户可以为您提供所需的所有灵活性,而且您不必跟踪任何额外的信息,因此不会产生额外的开销