Hi,
We've been using dotConnect (5.70) inside a library. This library is used by many of our applications. Each application has the license.licx file embedded.
We've just upgraded to dotConnect 6.30 and got the "License not found" error when the application is deployed on the server.
We've built the application on a machine that the new version was installed on. But we did not rebuild the library on this new dotConnect version.
On the server (where the application and library are deployed), we've simply GAC'ed the new version of dotConnect. Old version is still in the GAC. The library is deployed in the application's bin folder.
We would like to know if there's a problem with our setup and how can we support a library built with an older dotConnect version and an application with a new dotConnect version.
Hope it is clear enough to get some help.
Thanks
Phil
License compatibility with previous version
1. The license resource is version-dependent. If you want to use your application with the new version of Devart.Data.Oracle.dll, you should rebuild your application with the new version of dotConnect for Oracle.
2. As I understood, the chain of calls in your approach is the following:
YourApplication.exe -> YourClassLibrary.dll -> Devart.Data.Oracle.dll
The valid license for *.exe has to be available at any level of this chain: either built in *.exe (licenses.licx), or added to the class library (licenses.licx + licenses.config with the name of *.exe).
Basing on your description, you are embedding the license resource in *.exe, aren't you? So you have rebuilt YourApplication.exe to use it with the new version of Devart.Data.Oracle.dll, but YourClassLibrary.dll still references to and uses the old version of Devart.Data.Oracle.dll. As a result, YourApplication.exe has a license resource for the new Devart.* assembly but tries to access the old Devart.* assembly (via YourClassLibrary.dll). Please rebuild YourClassLibrary.dll so that it has a reference to the new version of Devart.Data.Oracle.dll.
2. As I understood, the chain of calls in your approach is the following:
YourApplication.exe -> YourClassLibrary.dll -> Devart.Data.Oracle.dll
The valid license for *.exe has to be available at any level of this chain: either built in *.exe (licenses.licx), or added to the class library (licenses.licx + licenses.config with the name of *.exe).
Basing on your description, you are embedding the license resource in *.exe, aren't you? So you have rebuilt YourApplication.exe to use it with the new version of Devart.Data.Oracle.dll, but YourClassLibrary.dll still references to and uses the old version of Devart.Data.Oracle.dll. As a result, YourApplication.exe has a license resource for the new Devart.* assembly but tries to access the old Devart.* assembly (via YourClassLibrary.dll). Please rebuild YourClassLibrary.dll so that it has a reference to the new version of Devart.Data.Oracle.dll.
A library is compiled with a license from an older version of the connecter.
I'm building an application with a license for a never version of the connector. Even though I have both DLLs available to the application, I get an exception that the library cannot find the old DLL.
What is the best practices for handling different versions of the Devart connector? It seems to me that every new version would require us to rebuild every single library and application, which is a maintenance nightmare.
Is is usually better to have the license built into the library, or into the application?
I'm building an application with a license for a never version of the connector. Even though I have both DLLs available to the application, I get an exception that the library cannot find the old DLL.
What is the best practices for handling different versions of the Devart connector? It seems to me that every new version would require us to rebuild every single library and application, which is a maintenance nightmare.
Is is usually better to have the license built into the library, or into the application?