Forum: PC-Programmierung net/C#: DbProviderFactories erkennt nicht MySqlClient


von Bastler (Gast)


Lesenswert?

Ich habe Google schon rauf und runter gesucht.
Ein scheinbar leichtes Problem, wo es viele Einträge gibt mit Lösungen.
Aber es funktioniert bei mir einfach nicht. (Linux Debian, mono)

Das Installieren des Connectors ist hier beschrieben und wurde mehrmals 
durchgeführt, mit Versionen 8.0.15.0 und 6.10.8

https://dev.mysql.com/doc/connector-net/en/connector-net-installation-unix.html

(meine mono --version ist 4.6.2)

Das installieren mit gacutils funktioniert und die assemblies sind 
vorhanden.
1
sudo gacutil -i MySql.Data.dll ; sudo gacutil -i MySql.Web.dll
2
$ gacutil -l | grep -i mysql
3
MySql.Data, Version=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
4
MySql.Web, Version=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d

Aber ein kleines Programm, erfolgreich kompiliert mit
1
mono-csc  ~/DBProvider_listAll.cs -lib:/usr/lib/mono/gac/ -r:System.Data.dll -r:MySql.Data.dll -r:MySql.Web.dll
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Data.Common;
5
using System.Data;
6
7
    class Program
8
    {
9
        static void Main(string[] args)
10
        {
11
            DataTable table = DbProviderFactories.GetFactoryClasses();
12
13
            foreach (DataRow row in table.Rows)
14
            {
15
                foreach (DataColumn column in table.Columns)
16
                {
17
                    Console.WriteLine("{0}:{1}",column.ColumnName,  row[column]);
18
                }
19
                Console.WriteLine("----------------------------");
20
            }
21
22
        }
23
    }

will mir den MySql Connector nicht anzeigen.

Warum?

von Bastler (Gast)


Lesenswert?

Selber rausgefunden:

https://stackoverflow.com/questions/52007836/dbproviderfactories-
getfactoryclasses-returns-no-results-after-installing-net-s

In .NET Framework, the providers are automatically available via 
machine.config and are also registered globally in the GAC. In .NET 
Core, there is no GAC or global configuration anymore. This means that 
you'll have to register your provider in your project first, like so:

man muss die Daten also händisch in /etc/mono/4.5/machine.config 
eintragen, dann geht es.

von Bastler (Gast)


Lesenswert?


von h4x0r (Gast)


Lesenswert?

Bastler schrieb:
> man muss die Daten also händisch in /etc/mono/4.5/machine.config
> eintragen, dann geht es.

Naja, wer minderwertige Programmiersprachen/Frameworks (C#/.NET) 
benutzt, muss eben mit Mehrarbeit rechnen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.