At my current project we came across the problem that we didn't receive our exception anymore but a TargetInvocationException. After a little investigation we found where our exception was. So here's a little explication about it.
When using reflection to create your assemblies, reflection will act like remoting. So it will invoke your method. Hereby we have a proxy and the stub. The moment that in the stub an exception is thrown this exception will be wrapped in a TargetInvocationException. To see the real exception you can take the innerexception of the exception.