Question: If I run this code:

```
var myAsm = typeof(MyType).Assembly;
var types = myAsm.GetExportedTypes();

```

I get:

```
System.IO.FileNotFoundException : Could not load file or assembly ....

```

which lists a dependent assembly. However, if I do:

```
var myAsm = Assembly.LoadFrom(...);  // DLL containing the same assembly as above
var types = myAsm.GetExportedTypes();

```

it works fine.

I really would prefer the first technique, as it's cleaner... why should I have to load a DLL that is already loaded? Any advice?

Answer: 
Have you tried 

```
System.Reflection.Assembly.GetExecutingAssembly();

```

Or

```
System.Reflection.Assembly.GetAssembly(typeof(MyType));

```

The reason your second one works is you are actually loading a .dll. When you call typeof(MyType).Assembly, it has no idea which .dll reflection should be using. Which is why either `GetExecutingAssembly` or `GetAssembly(tyepof(MyType))` should work.
If you are trying to Load an Assembly that *IS NOT* the ExecutingAssembly, and that DLL has references to lower-level objects like MyProj.Interfaces or MyProj.BaseClasses or Infragistics controls or something like that... THOSE dll's will also have to be available in the same folder from which you are loading the initial dll.