ActualBinaries\Bin
Web1\Bin (really hardlink to ActualBinaries\Bin)
Web2\Bin (really hardlink to ActualBinaries\Bin)
Although the CLR did indeed go to the correct folder it failed to load the assemblies in there complaining that the format of the path was wrong. So sensing that I was close to something I tried creating an real bin folder and hardlink the indicidual files. E.g.
ActualBinaries\bin\MyComponent.dll
Web1\bin\MyComponent.dll (really hardlink to ActualBinaries\bin\MyComponent.dll)
Web2\bin\MyComponent.dll (really hardlink to ActualBinaries\bin\MyComponent.dll)
Now that worked! So how do create one of these links? Well it’s actually quite straightforward;
fsutil hardlink create
"C:\Web2\bin\MyComponent.dll"
"C:\ActualBinaries\bin\MyComponent.dll"
Apparently Powershell can easily create them too, although I’ve yet to try that. So is it worth the effort? I can see that running one MSI would be handy, especially when you’ve got COM registrations going on. However if you’ve only got .net components and no extra registrations then I doubt it’s worth the extra effort.
If you get “Access Denied” then read this updated post;
https://pauliom.wordpress.com/2010/03/03/sharing-a-single-bin-folder-across-multiple-sites/