Důvod, proč je výjimka vyvolána, jakmile zadáte metodu, je jednoduchý - kompilátor JIT potřebuje pouze vyřešit odkazy. MySqlConnection vyžaduje System.Data a je to první metoda, jak to udělat, takže tehdy je vyvolána výjimka.
Pokud jde o ladění problému, zdá se, že jde o nesprávně nainstalovaný rámec .NET na cílovém počítači. Měli byste zkusit Jak na to povolit protokolování selhání vazby sestavení (Fusion) v .NET abychom se podívali, kde se .NET ve skutečnosti snaží najít knihovnu a proč vůbec zahazuje všechny, které najde.
Pokud vás to nepovede k vyřešení vašeho problému, zkusil bych odinstalovat a znovu nainstalovat .NET framework 2.0 a poté 3.5.
Důvod, proč Copy Local funguje, je ten, že se pak aplikace nepokouší načíst DLL z Global Assembly Cache, ale spíše ze spustitelného adresáře vaší aplikace. Váš skutečný problém je však v tom, že nenachází správnou knihovnu DLL v GAC.
Pokud vám Fusion ukáže, že se knihovna MySQL pokouší načíst špatnou verzi System.Data, můžete pomocí manifestu aplikace přinutit načíst jinou verzi (která by snad měla být kompatibilní). O manifestech aplikace si můžete přečíst zde - http:// msdn.microsoft.com/en-us/library/aa374191(VS.85).aspx
Hodně štěstí.