<p>I know that the .NET framework looks for referenced DLLs in several locations</p>

<ul>
<li>Global assembly cache (GAC)</li>
<li>Any private paths added to the AppDomain</li>
<li>The current directory of the executing assembly</li>
</ul>

<p>What order are those locations searched? Is the search for a DLL ceased if a match is found or does it continue through all locations (and if so, how are conflicts resolved)?</p>

<p><em>Also, please confirm or deny those locations and provide any other locations I have failed to mention.</em></p>

No longer is the current directory searched first when loading DLLs! This change was also made in Windows XP SP1. The default behavior now is to look in all the system locations first, then the current directory, and finally any user-defined paths.
(ref.
http://weblogs.asp.net/pwilson/archive/2003/06/24/9214.aspx
)
The default search order, which can be changed by the application, is also described on MSDN:
Dynamic-Link Library Search Order
.