Grunden til, at undtagelsen kastes, så snart du indtaster metoden, er enkel - JIT-kompileren skal kun løse referencerne derefter. MySqlConnection kræver System.Data, og det er den første metode til at gøre det, så det er, når undtagelsen bliver kastet.
Hvad angår fejlfinding af problemet, virker det som forkert installeret .NET framework på målmaskinen. Du bør prøve Sådan gør du aktiver logning af assembly bind-fejl (Fusion) i .NET for at se på, hvor .NET faktisk forsøger at finde biblioteket, og hvorfor det kasserer noget, det overhovedet finder.
Hvis det ikke får dig til at løse dit problem, ville jeg prøve at afinstallere og geninstallere .NET Framework 2.0 og derefter 3.5.
Grunden til, at Copy Local virker, er, at applikationen ikke forsøger at indlæse DLL'en fra Global Assembly Cache, men snarere fra den eksekverbare mappe i din applikation. Men dit virkelige problem er, at det ikke finder den rigtige DLL i GAC.
Hvis Fusion viser dig, at MySQL-biblioteket forsøger at indlæse en forkert version af System.Data, kan du bruge et programmanifest til at tvinge det til at indlæse en anden version (som forhåbentlig skulle være kompatibel). Du kan læse om ansøgningsmanifester her - http:// msdn.microsoft.com/en-us/library/aa374191(VS.85).aspx
Held og lykke.