The code below tells me that the type of the two objects differ, even though the types are both "ClassLib.Foo".
The project references the .dll to create the x1.
The project's .exe is not in C:\dev\tmp.
object x1 = new ClassLib.Foo();
object x2 = Activator.CreateInstanceFrom(@"C:\dev\tmp\ClassLib.dll", "ClassLib.Foo").Unwrap();
Console.WriteLine(x1.GetType() == x2.GetType() ? "Same type" : "Different types");
Console.WriteLine("x1 : {0}", x1.GetType().ToString());
Console.WriteLine("x2 : {0}", x2.GetType().ToString());
If I instantiate x2 from the same physical file that is referenced by the project (ie. the one in the same folder as the .exe) the types are the same.
WTF?
"Only the savage fears what he does not understand" - The Silver Surfer