How to load an .exe as a .NET assembly?

Joan Venge picture Joan Venge · Apr 27, 2011 · Viewed 12.2k times · Source

Can I just use?:

Assembly.LoadFile

Not sure if this is the way to do this?

But when I try that approach, it throws a Could not load file or assembly "CustomControlLib" or one of its dependencies. The system cannot find the file specified.

Any ideas?

Answer

Grant Thomas picture Grant Thomas · Apr 27, 2011

You will need to make sure that the dependencies are also loaded into the app domain. If they aren't located automatically, you can subscribe to AppDomain.AssemblyResolve in order to find and load assemblies manually if needs be.

For example:

private Assembly AssemblyEventHandler(object sender, ResolveEventArgs args)
{
    return locatedAssembly;
}

Also, I would consider using Assembly.LoadFrom, particularly after reading this which has a strong assertion by nobugz and links to some good reading (all dated but ought to still be withstanding for the most part.)