After some help and reading, I am sure the concept activation context can be used to solve my problem. In my application, I have to load an unmanaged dll c.dll by another managed dll b.dll, which is loaded by a.dll, which is loaded by app.exe. The sequence is that
app.exe -> a.dll (managed) -> b.dll (managed) -> c.dll (unmanaged)
I have the source of a.dll and b.dll, but app.exe and c.dll belongs to the third party. Now, regardless of whether a.exe loads other versions of c.dll or not, I have to load my own c.dll (my c.dll resides in a different folder with that carried by a.exe installation).
I used LoadLibraryEx, but that app.exe have loaded a different of c.dll before I can load my own c.dll. These two c.dll are same name with different versions. Since a different version of c.dll has been loaded, when I called LoadLibraryEx, my c.dll won't be loaded. I need a solution to solve this problem.
How does the concept activation context can be migrated to the .NET environment to solve this problem?
I'm not sure what you mean by activation context.
If you want to load an unmanaged DLL in a managed environment you need to do so via pInvoke:
Also, you will need to free the handle stored in the
IntPtrreturned byLoadLibrary.