LLBLGen 5.4.4 requiring old Devart?

Posts   
 
    
njbelf
User
Posts: 70
Joined: 07-Jun-2017
# Posted on: 23-Oct-2018 00:37:22   

Hi, Not sure what's going on here, but when I try to sync with a mysql database I get the following error:

Exception message:

Exception type: FileLoadException Could not load file or assembly 'Devart.Data.MySql, Version=8.10.1031.0, Culture=neutral, PublicKeyToken=09af7300eec23701' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Latest version of Devart.Data.MySql is 8.12.1229.0 which is what we are running. I tried putting binding redirects on all the config files I could find in the LLBLGen Pro V5.4 directory to no avail.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39760
Joined: 17-Aug-2003
# Posted on: 23-Oct-2018 09:51:25   

The designer isn't using a direct reference, it loads the assembly through the DbProviderFactory system in .NET. This system reads from the machine.config file the factory associated with the name "Devart.Data.MySql".

There are a couple of machine.config files on a system, one for 32bit and one for 64bit. Unless you explicitly start the 32bit runner, you start the designer in 64bit and therefore have to look in the machine.config file: c:\windows\Microsoft.NET\Framework64\config\machine.config

It should have a line like:

      <add name="dotConnect for MySQL" invariant="Devart.Data.MySql"
        description="Devart dotConnect for MySQL" type="Devart.Data.MySql.MySqlProviderFactory, Devart.Data.MySql, Version=8.12.1229.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />

So either you're running the designer by accident as 32bit (and therefore use an outdated machine.config file) or the machine.config file isn't updated by the installer of devart.

But in any case: our code doesn't have any reference with an ado.net provider other than sqlclient: they're all loaded through DbProviderFactory.

Frans Bouma | Lead developer LLBLGen Pro
njbelf
User
Posts: 70
Joined: 07-Jun-2017
# Posted on: 23-Oct-2018 16:30:46   

Otis wrote:

The designer isn't using a direct reference, it loads the assembly through the DbProviderFactory system in .NET. This system reads from the machine.config file the factory associated with the name "Devart.Data.MySql".

There are a couple of machine.config files on a system, one for 32bit and one for 64bit. Unless you explicitly start the 32bit runner, you start the designer in 64bit and therefore have to look in the machine.config file: c:\windows\Microsoft.NET\Framework64\config\machine.config

It should have a line like:

      <add name="dotConnect for MySQL" invariant="Devart.Data.MySql"
        description="Devart dotConnect for MySQL" type="Devart.Data.MySql.MySqlProviderFactory, Devart.Data.MySql, Version=8.12.1229.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />

So either you're running the designer by accident as 32bit (and therefore use an outdated machine.config file) or the machine.config file isn't updated by the installer of devart.

But in any case: our code doesn't have any reference with an ado.net provider other than sqlclient: they're all loaded through DbProviderFactory.

Thank you for that bit of information. We did indeed have an old DBProvider in our machine.config.