我们已经使用最新的 Ocean/Petrel 修补程序构建了一个插件:2010.2.2。我们所有的测试工作正常。但是插件在与 2010.2 一起使用时会崩溃。
任何人的任何建议?
2 回答
海洋/海燕释放分类如下:
- 主要版本:2009.1、2010.1、2011.1
- 次要版本或补丁:2009.2、2010.2、2011.2
- 热修复:2010.2.1、2010.2.2
主要版本不兼容二进制:针对 2009.1 编译的插件需要重新编译才能与 2010.1 一起使用。有了 2 年的 API 稳定性,应该只是重新编译。您可能会收到有关将在下一个版本中弃用的过时 API 的警告,但这应该是一项快速的任务。
次要版本通常向后二进制兼容:Petrel 2010.2 将能够运行使用 2010.1 编译的插件。但是不能保证向前的二进制兼容性:Petrel 2010.1 不会运行使用 2010.2 编译的插件。
请注意,次要版本也可以引入少量但新的 API。
修补程序始终向后二进制兼容:Petrel 2010.2 可以运行使用 2010.1、2010.2、2010.2.1 编译的插件。但是目前不能保证向前的二进制兼容性:Petrel 2010.2 不会运行使用 2010.2.1 或 2010.2.2 编译的插件。
热修复从不引入新的 API。
所以规则是:
- 始终使用最后一个主要版本(在您的情况下为 2010.1)编译您的插件,
- 如果您绝对需要此补丁中引入的新 API,请使用最新的 Minor 版本 (2010.2) 编译您的插件。
- 但是永远不要针对热修复编译你的插件,
不遵守这些规则将迫使您的客户使用、部署或重新部署您用于构建插件的补丁或修补程序。这将延迟(最好的情况)或阻止(最坏的情况)您的客户销售/采用您的插件。
希望它有帮助
问候
文森特
我也发现这是一个问题。我所做的是为每个版本的 Petrel 保留 Public 文件夹的副本,并将引用链接到我希望编译的文件夹/版本,而不是总是链接到已安装的 petrel 版本。您可以使用 .targets 文件轻松切换。然后我按照文森特所说的,确保引用适当的 dll 进行构建。
所以,即使我有 Petrel 2010.2,我也会在构建过程中引用 2010.1 库。
授予