使用语义版本控制的ActiveX COM DLL的版本控制,但每个MAJOR.MINOR的GUID?

时间:2014-09-24 15:40:24

标签: dll com versioning semantic-versioning

长话短说,我是一个VisualBasic 6项目的维护者,该项目产生一个ActiveX COM DLL,该内部由大约50个在组织内部使用的软件包内部使用。

在过去的几年里,我们一直在关注语义版本" MAJOR.MINOR.PATCH"对于每个发布的DLL,并且每个版本都分配了一个唯一的GUID。即1.1.1和1.1.2具有单独的GUID。

它工作正常,但这会导致每个软件包都需要一个新版本 - 即使不需要 - 也只需这样它们就可以引用新的GUID并重新编译。由于内部发布流程,这浪费了几十个工时。

我的问题是,这会是一个不良的做法"维护每个MINOR版本的GUID,以便1.1.1,1.1.2甚至1.1.99具有相同的GUID?相反,每个主要版本的GUID会更好吗?

这将导致仅在更新主要版本或次要版本时更改引用,从而减少依赖于它的软件包所需的更改次数。

最后,如果它有助于响应,目前DLLS的名称为:MyActiveXDLL_vMAJOR.MINOR.PATCH.dll。

使用每个MINOR的GUID,我们将切换到MyActiveXDLL_vMAJOR.MINOR.dll

1 个答案:

答案 0 :(得分:0)

可以通过不更改GUID(您可以在类构建器中设置它,并将其存储在您可以在记事本中打开源文件时可以看到的隐藏属性)来执行此操作,但是只能执行此操作你没有做出任何重大改变。

重大改变是:

  • 界面更改(添加/更改/删除/重新排序的方法/属性)
    • 包括对代价,参数订单,参数名称的更改
  • 删除了界面
  • 之前有效的方法,但现在还没有。 (如果使用该方法,则只会出现问题。如果不再使用,则可以弃用它,只是让它抛出错误,但不要删除它。)

在VB中,默认情况下,您将依赖自动生成的dispid,guids和接口。您可以使用类构建器将这些值设置为特定值。

您可以将初始值设置为先前版本中自动生成的值。您必须手动执行此操作 - 您必须在TLBVIEW中打开类型库以查明它们是什么。