Lets say you have one interface and one implementation.
You build them in one assembly.
Then in your other (user)project you use this interface file and reference the assembly built previously.
But at runtime your user project will unable to create the object of that interface.
Because in this current project this interface is recompiled under this-project's assembly and namespace probably.
So it become a separate interface altough identical in source.
This gives you some kind of Security, Visibility Level.
And perhaps it generates some kind of GUID, so every thing is same but GUID key is different. (And then they wrap it into security and stuff...)
What you think?
Check out: http://www.yoda.arachsys.com/csharp/plugin.html