Multiple extensions using same 3rd party class libraries of different versions?

Multiple extensions using same 3rd party class libraries of different versions?

  
Is outsystems capable of handling multiple versions of the same 3rd party class library?

Example
  • Outsystems ExtensionA uses MyClass.dll version X
  • Outsystems ExtensionB uses MyClass.dll version Y
ExtensionB is published after ExtensionA has been published - will "MyClass.dll" version Y overite the "MyClass.dll" version X? 

Note: I know you can not publish an eSpace with the same name as a 3rd party library! (this is undocumented, very odd behaviour occurs!).

DLL hell in 2015? :)
Answer: NO.

What happens: the deployment order pulls one of them, and you don't really get a choice, and so if there are different versions, it will potentially fail to publish, or have unexpected results.

This is especially frustrating with the Json.NET and RestSharp libraries, which get used by a ton of stuff, and in some cases you *need* newer functionality but system components shipped with older versions.

J.Ja
Conclusion...

In regards to DLL, I had a look inside the IIS app directory and this is what I found
  1. eSpace are deployed as MyESpace.dll (where MyESpace.dll is the name as your eSpace name)
  2. Extensions are deployed as OutSystems.NssMyExtension.dll, (where “MyExtension” is the name of your extension)

What does this mean?

This means you can title your extension name with the same name as a 3rd party library. But you can not title your eSpace name with the same name as a 3rd party library (this will cause conflicts and odd behaviour)
 

As for running multiple extensions with different version of a 3rd party library! there is a work around for this but its not recommended. (way too much work!)

You might run into issue if you consume many RESTful web services via extensions instead of using the built in outsystems service studio REST consume feature - because there is a high chance you would reference multiple versions of the same commonly used libraries json.net, RestSharp.net etc! - So it's best for you to consume a web service via  outsystem service studio - REST consume! (This would not eliminate the problem but it sure would reduce some common issues)