I think that unmanaged DLLs are loaded only once for each OS process, so each application domain will have the same loaded instance. To offload the dll, use the FreeLibrary function. However, since several application domains probably loaded the dll, there is no guarantee that FreeLibrary will actually free / unload the dll from the same application domain.
As BillW says, this also sounds like a design nightmare!
source share