为什么我的使用 Ocean/Petrel 2010.2.2 构建的插件无法在 2010.2 上运行?
我们使用最新的 Ocean/Petrel 修补程序构建了一个插件:2010.2.2。 我们所有的测试都工作正常。 但该插件与2010.2一起使用时会崩溃。
有人有什么建议吗?
We have built a plug-in with the latest Ocean/Petrel hotfix: 2010.2.2.
All our tests work OK.
But the plug-in crashes when used with 2010.2.
Any advice from anyone?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Ocean/Petrel 版本分类如下:
主要版本是不二进制兼容:编译的插件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。
因此规则是:
不遵循这些规则将迫使您的客户使用、部署或重新部署您用于构建插件的补丁或修补程序。这将延迟(最好的情况)或阻止(最坏的情况)您的客户销售/采用您的插件。
希望有帮助
问候
文森特
Ocean/Petrel releases are classified as follow:
Major releases are not binary compatible: a plug-in compiled against 2009.1 needs to be recompiled to work with 2010.1. With the 2 year API stability, it should be just a recompilation. You might have warnings about Obsolete APIs that will be deprecated in the next release, but it should be a quick task.
Minor releases are usually backward binary compatible: Petrel 2010.2 will be able to run a plug-in compiled with 2010.1. However forward binary compatibility is not ensured: Petrel 2010.1 will not run a plug-in compiled with 2010.2.
Note that Minor releases can also introduce few, but new APIs.
Hot fixes are always backward binary compatible: Petrel 2010.2 can run plug-ins compiled with 2010.1, 2010.2, 2010.2.1. However forward binary compatibility is currently not ensured: Petrel 2010.2 will not run plug-ins compiled with 2010.2.1 or 2010.2.2.
Hot fixes never introduce new APIs.
So the rules are:
Not following these rules will force your clients to use, deploy or redeploy the patch or hot fix you used to build your plug-in. This will delay (best case) or prevent (worse case) sales/adoption of you plug-in by your clients.
Hope it helps
Regards
Vincent
我也发现这是一个问题。我所做的是为每个版本的 Petrel 保留一个 Public 文件夹的副本,并将引用链接到我希望编译的文件夹/版本,而不是总是链接到已安装的 petrel 版本。您可以使用 .targets 文件轻松切换。然后,我按照 Vincent 所说的进行操作,并确保引用适当的 dll 来进行构建。
因此,即使我有 Petrel 2010.2,我也会在构建过程中引用 2010.1 库。
授予
I have also found this to be a problem. What i do is keep a copies of the Public folder for each version of Petrel and link the references to the folder/version i wish to compile against instead of always linking to the installed petrel version. You can switch easily using a .targets file. I then follow what Vincent said and ensure to reference the appropriate dlls for a build.
So, even if i have Petrel 2010.2 i reference the 2010.1 libraries during the build.
Grant