So .NET does some funny things sometimes. Mr. Hanselman has already explained what is going on in a little detail. I added a little something from this bytes.com post.
Seems like it will be the way to go!
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Person.dll"
AssemblyName an = AssemblyName.GetAssemblyName(filePath);
Assembly dll = Assembly.Load(an);
Type t = dll.GetType("Plugin.Person");
var instance = t.InvokeMember(String.Empty,BindingFlags.CreateInstance, null, null, null);
Person p = (Person)instance;