Tach!
Da nirgends beschrieben wird, dass man bei ReferencedAssemblies nicht nur "System.Windows.Forms" sondern "System.Windows.Forms.dll" angeben muss, konnte ich dies nur über Try-Error-Versuche herausfinden.
Man kann nicht aus einem Namespace auf den Namen einer Assembly schließen und umgekehrt. Zwischen beiden gibt es keinen zwingenden Zusammenhang. Auch der .Net-Compiler kann das nicht, weswegen ihm unbedingt neben den Namespaces die Namen der Assemblys angegeben werden müssen - unter Umständen sogar noch mit Versionsnummer, Key und Ort.
Dieser Fakt war mir bekannt und so konnte ich gezielt auf Suche gehen, auch wenn mir bis jetzt nicht bewusst war, dass man .Net-Code wie bei einer Script-Sprache zur Laufzeit auf diese Weise kompilieren und einbinden kann. Die Bestätigung, dass eine DLL angegeben werden muss, fand ich dann auch erst im x-ten Blog-Beitrag, der sich mit dem Thema beschäftigt: http://simeonpilgrim.com/blog/2007/12/04/compiling-and-running-code-at-runtime/.
dedlfix.