I'm guessing that you're actually declaring two different interfaces in the two different projects. Just because they have the same name and members doesn't make them the same type. Check out the attached solution. Note that the interface is defined in a third assembly that both the other two must reference. Both the application and the library you're loading dynamically must refer to the same interface.