Does anyone know if there's a way to hook into an "OnLoad" event to run some operations when an assembly loads?
Specifically, I am creating a plug-in for an application. The plug-in's DLL gets loaded and objects start being used, but the problem is I need to load another assembly dynamically before anything happens. This assembly can't be copied to the application's directory and must remain invisible to it.
It is really sad that writing a Main() function in an Assembly DLL is never called by the .NET framework. It seems that Microsoft forgot that.
But you can easily implement it on your own:
In the DLL assembly you add this code:
Then in the Exe Assembly that loads this DLL you add this function:
Obviously you should call this function at the very beginning before doing anything else with that Assembly.
You need to hook on to
AssemblyLoad
event.Refer- http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyload.aspx
C# does not provide a way to do that but the underlying IL code does via module initializers. You can use tools like Fody/ModuleInit to turn a specially named static C# class to run as a module initializer which will be run when your dll is loaded.