Ocean Petrel PluginPackager Fails Third-Party Validation

104 Views Asked by At

I'm developing a Petrel plugin via Ocean, both versions 2022, but when running the PluginPackager as part of the post-build of the PIP project, validation fails:

2>  ERROR Plugin includes library that is already distributed by Petrel or another plugin, but it is not identical.
2>  Plugin includes tbb, which conflicts with the same library in .

The error doesn't tell me which library but there are only three other instances of tbb.dll in the Petrel installation and various plugins, none of which are the same version as the tbb.dll I'm using.

According to the AcceptanceChecklist.xml, it seems that there should not be a validation error:

The plug-in may use 3rd party libraries deployed by Petrel. The Components list documents this set of 3rd parties.

  • The plug-in must not deploy any library on this list, unless a different version is required

Does anyone know how to pass validation when deploying third-party libraries?

1

There are 1 best solutions below

0
Francisco Xavier Vera Carrión On

To pass the validations and generate the .pip you should follow some rules that was useful for me:

  • The \bin where are located the .dlls does not have contain any SLB dll.
  • So the SLB dlls referenced should be marked wih CopyLocal = false.
  • In the DeployList.xml file you don't include any SLB dll.
  • If you use some 3rd party dll already used by Petrel, mark that dlls in the pip builder with the waive in the PluginPackager: /waiveValidationErrors="myFirstDllToBeIgnoredInTheValidation.dll | mySecondDllToBeIgnoredInTheValidation.dll"
  • Be sure to use the last PluginPackager version, because it gives you more information about the exceptions.
  • I use this optional parameters: ContinueOnError="false" IgnoreExitCode="false".
  • To avoid 3rd party dll version conflicts, I use ILRepack to merge my dlls and the 3rd party in 1 unique dll. This will solve the half of your problems.