The main application needs to be able to find Microsoft.Expression.Interactions in order to load module A, no way around it. Also keep in mind when you distribite your application the same rule applies.
If you really don't want to reference that assembly in your shell project (which btw is actually the easiest way since it will copy it to the main application's output dir so you're settled) the only other option is copying it there manually. Could be done using a post-build event, but by doing that you're also tieing both projects together since they need to know about each other's output directory. Another way is making all projects put their output in the same directory. I'v been using that for some pretty large scale applications and it works nicely. Also distributing the application is then just a matter of copying that entire directory.