Q:

Shared assemblies in one location?

I have a big project with many subprojects.
(as mentioned in the drawing)
Both WebSiteA and WebSiteB has referenced to both DLL projects.
however when I change the dll's - I need to update each bin in each webSite.
I Don't want that.
I know I can put them in GAC but I was told not to  (don't ask me why please.)

Is there any solution like : 

so when I update any dll - I put it only at one place ? (and so the dll's won't be at each site's bin)

A:

You can make a trick with the .refresh file reference, but not tested on the live server.
First place your common dll, on a common directory.
Second on each bin, place the *.refresh file together with the dll, that says inside from where to update the dll if a new version is found.
and so you have inside the Bins something like:
mySuperModule.dll
mySuperModule.dll.refresh

and inside the mySuperModule.dll.refresh the location of the module that need to check for update -> 
d:\Dlls\mySuperModule.dll

where d:\dlls are the common place for the dlls that search for new updates.
At the end you only update the common directory dlls, and you left the projects make the rest automatic.

