My colleague came up with a novel way to solve my problem, finding functions in the calling program (i didnt realise you could go both ways)
Console.WriteLine("Executing Go (in PROJECT.DLL)");
Assembly a = Assembly.GetCallingAssembly();
Type myType = a.GetType("SlFuncs");
MethodInfo mymethod = myType.GetMethod("PhaseList");
Object obj = Activator.CreateInstance(myType);
Object[] parameters = new Object[2];
parameters[0] = "Hello";
parameters[1] = 1234;
mymethod.Invoke(obj, parameters);
just for info if ever you need it and didnt know about it.
Phil