If you're getting assembly load errors and cannot figure out why, you can use the fusionlog viewer to help figure it out.  The fusion log will show exactly how all managed assemblies were resolved.

Check out:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrffusionlogviewerfuslogvwexe.asp

This includes retargeted assemblies.  For example, if you run your device application on the desktop, compact framework assemblies are “retargeted” to desktop versions -- but only if fusion policy was applied. 

If you get a cryptic assembly load error when trying to run your app, try using the above log viewer.  It can save you a few hours.