Мда. Остаётся только использовать
processmonitor, чтобы точно узнать, что он там пытается открыть.
--- Добавлено ---
Одно дело, когда динамически подключается скомпилированная dll, в которую уже включены референсы на используемые ею сборки. А если, как в случае с илом, скрипт компилируется на лету, то при компиляции нужно указывать используемые скриптом сборки. Вот цитата из msdn:
If your project references any assemblies, you must specify the assembly names as items in a StringCollection set to the ReferencedAssemblies property of the CompilerParameters used when invoking compilation.
Так что получается, что LINQ в этот список включен, а System.Windows.Forms - нет.