Search code examples
assembliesgacversions

Load multiple versions of the same dll without putting it in the GAC


I would like to load two different versions of the same dll within the same process. At the same time I would like to avoid placing any of them in the GAC.

Any ideas?

Thanks, Krikor


Solution

  • Yes, it seems like i have to manually load the assembly, one way or another.

    One solution that i found was to subscribe to the AssemblyResolve event of the appDomain. This event is raised when an assembly is not found and allows you to manually provide it.

    1. Reregister an event handler like this

    AppDomain.CurrentDomain.AssemblyResolve += MyResolveEventHandler;

    static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) { return Assembly.LoadFrom(@"OldAsm\Asm.dll"); }

    1. Once the code that uses the specific code is reached the .NET Framework will try to load the assembly, it will crash and will call your handler (MyResolveEventHandler).

    I would keep looking for a way to resolve the right reference without having to write any code and without having to put anything in the GAC. If anyone finds a way, please post it.

    Thanks