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?