为什么使用Ocean / Petrel 2010.2.2构建的插件不能与2010.2一起使用?

时间:2011-07-13 07:36:57

标签: ocean petrel

我们已经使用最新的Ocean / Petrel修补程序构建了一个插件:2010.2.2。 我们所有的测试都可行。 但是当与2010.2一起使用时,插件崩溃了。

任何人的建议吗?

2 个答案:

答案 0 :(得分:7)

Ocean / Petrel发布分类如下:

  • 主要版本:2009.1,2010.1,2011.1
  • 次要版本或补丁:2009.2,2010.2,22012.2
  • Hotfix:2010.2.1,2010.2.2

主要版本不是二进制兼容的:针对2009.1编译的插件需要重新编译才能与2010.1一起使用。使用2年的API稳定性,它应该只是重新编译。您可能会收到有关将在下一版本中弃用的过时API的警告,但这应该是一项快速任务。

次要版本通常是向后兼容的:Petrel 2010.2将能够运行使用2010.1编译的插件。但是,无法确保前向二进制兼容性:Petrel 2010.1不会运行使用2010.2编译的插件 请注意,次要版本也可以引入一些新的API。

Hotfix始终是向后二进制兼容的:Petrel 2010.2可以运行使用2010.1,2010.2,2010.2.1编译的插件。但是目前无法确保正向二进制兼容性:Petrel 2010.2不会运行使用2010.2.1或2010.2.2编译的插件。
Hotfix从不会引入新的API。

所以规则是:

  • 始终使用上一个主要版本(在您的情况为2010.1中)
  • 编译您的插件
  • 如果您绝对需要在此修补程序中引入新的API,请将您的插件编译为最新的Minor版本(2010.2)。
  • 永远不要针对热修复编译插件

不遵循这些规则将强制您的客户端使用,部署或重新部署您用于构建插件的修补程序或修补程序。这将延迟(最佳情况)或阻止(更糟糕的情况)客户销售/采用您的插件。

希望有帮助 问候
文森特

答案 1 :(得分:5)

我也发现这是一个问题。我所做的是为每个版本的Petrel保留Public文件夹的副本,并将引用链接到我希望编译的文件夹/版本,而不是始终链接到已安装的petrel版本。您可以使用.targets文件轻松切换。然后我按照文森特的说法去做,并确保引用适当的dll进行构建。

所以,即使我有Petrel 2010.2,我也会在构建过程中引用2010.1库。

捐赠