My company ships a product that among other things registers SharePoint EventReceiver on SPLists, monitoring for changes. I\'ve been registering it in the GAC where it runs just
Deployment of SharePoint EventReceiverwould not be possible in Bin. it has to be done in GAC only. I'm not sure what the exact reason is but may be it has to do something with code security.
Event receiver assemblies cannot be installed only in "bin", because this way the .net framework could not find them.
When your assembly is loaded from "bin" it is because assembly loader uses probing to locate the assembly. First it looks in GAC, then looks for directory called "bin" under the current working directory.
Hence all code you use to run the web interface - codebehind for ASPX pages, web services etc, can be placed in inetpub..../bin because the working directory of your web application is there.
However, workflows and scheduled "timer jobs" are executed by the OWSTIMER.exe, which is a Windows Service. As a typical windows service, it has its working directory somewhere in c:\windows.
It means, if you place your assembly somewhere in inetpub...\bin, it will not be found by the owstimer.
Hence, shared assemblies like event handlers have to be deployed to GAC.