De reden waarom de uitzondering wordt gegenereerd zodra u de methode invoert, is eenvoudig - de JIT-compiler hoeft dan alleen de verwijzingen op te lossen. MySqlConnection vereist System.Data, en het is de eerste methode om dit te doen, dus dat is wanneer de uitzondering wordt gegenereerd.
Wat betreft het opsporen van fouten, het lijkt erop dat het .NET-framework niet goed op de doelcomputer is geïnstalleerd. Probeer Hoe logboekregistratie van fouten bij het samenstellen van bindingen (Fusion) inschakelen in .NET om te kijken waar .NET de bibliotheek daadwerkelijk probeert te vinden, en waarom het alles weggooit dat het vindt.
Als dit je probleem niet oplost, zou ik proberen om .NET Framework 2.0 en vervolgens 3.5 te verwijderen en opnieuw te installeren.
De reden dat Copy Local werkt, is dat de toepassing dan niet probeert de DLL uit de Global Assembly Cache te laden, maar eerder uit de uitvoerbare map van uw toepassing. Uw echte probleem is echter dat het de juiste DLL niet vindt in GAC.
Als Fusion je laat zien dat de MySQL-bibliotheek een verkeerde versie van System.Data probeert te laden, kun je een toepassingsmanifest gebruiken om het te dwingen een andere versie te laden (die hopelijk compatibel zou moeten zijn). U kunt hier lezen over toepassingsmanifesten - http:// msdn.microsoft.com/en-us/library/aa374191(VS.85).aspx
Veel succes.