I have a solution with 3 projects (GUI, BL and DAL). The DAL assembly is signed and deployed in the GAC.
When I build the solution the DAL is compiled and the assemb
Yes it check the GAC first. The loading rules are documented here. To fix your problem you should update the assembly version as you change the API.
Short answer Yes, the GAC has precedence over local files.
this is a different behavior from what we are used to in native dll world (excluding some system dlls that where always loaded from SYSTEM32 no matter what).
Why?
Imagine that you have multiple applications with the same assembly now that assembly has a bug how do you fix all of your applications?
It hard to start search for all the applications on all drivers, its easier to deploy a single assembly to the GAC ans fix all the application at once.
As for your problem, if you change API you need to change the assembly version of that assembly, this way the fusion engine will pick up the version that is in the local folder.