This is a bug in System.Diagnostics.Process.Modules.
In .NET 3.5 it used to be possible to list all the modules, including managed dlls, loaded into current process. In .NET 4.0 only unmanaged dlls are listed.
Here’s code snippet that demos the problem:
foreach (ProcessModule processModule in Process.GetCurrentProcess().Modules)
This has been confirmed internally by a CLR developer (Karel Zikmund).
Impact: our company will have to rewrite a substantial part of our .NET oriented product if this is not fixed.