Der Grund, warum die Ausnahme ausgelöst wird, sobald Sie die Methode eingeben, ist einfach – der JIT-Compiler muss dann nur noch die Referenzen auflösen. MySqlConnection erfordert System.Data, und es ist die erste Methode, die dies tut, also wird die Ausnahme ausgelöst.
Was das Debuggen des Problems betrifft, so scheint es, als wäre das .NET-Framework auf dem Zielcomputer nicht ordnungsgemäß installiert. Sie sollten How to ausprobieren Protokollierung von Assembly-Bindungsfehlern (Fusion) in .NET aktivieren um einen Blick darauf zu werfen, wo .NET tatsächlich versucht, die Bibliothek zu finden, und warum es alle findet, die es überhaupt findet.
Wenn es Sie nicht zur Lösung Ihres Problems führt, würde ich versuchen, .NET Framework 2.0 und dann 3.5 zu deinstallieren und neu zu installieren.
Der Grund, warum Copy Local funktioniert, liegt darin, dass die Anwendung dann nicht versucht, die DLL aus dem globalen Assemblycache zu laden, sondern aus dem ausführbaren Verzeichnis Ihrer Anwendung. Ihr eigentliches Problem ist jedoch, dass es nicht die richtige DLL in GAC findet.
Wenn Fusion Ihnen anzeigt, dass die MySQL-Bibliothek versucht, eine falsche Version von System.Data zu laden, können Sie ein Anwendungsmanifest verwenden, um es zu zwingen, eine andere Version zu laden (die hoffentlich kompatibel sein sollte). Hier können Sie mehr über Anwendungsmanifeste lesen - http:// msdn.microsoft.com/en-us/library/aa374191(VS.85).aspx
Viel Glück.