Here is an extract from:
\Windows\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets
It's the list of locations C# and VB projects will use to resolve
project references.
<!--
The SearchPaths property is set to find assemblies in the
following order:
(1) Files from current project - indicated by
{CandidateAssemblyFiles}
(2) $(ReferencePath) - the reference path property, which
comes from the .USER file.
(3) The hintpath from the referenced item itself,
indicated by {HintPathFromItem}.
(4) The directory of MSBuild's "target" runtime from
GetFrameworkPath.
The "target" runtime folder is the folder of the
runtime that MSBuild is a part of.
(5) Registered assembly folders, indicated by {Registry:*,*,*}
(6) Legacy registered assembly folders, indicated by
{AssemblyFolders}
(7) Look in the application's output folder (like bin\debug)
(8) Resolve to the GAC.
(9) Treat the reference's Include as if it were a real file name.
-->
<AssemblySearchPaths Condition=" '$(AssemblySearchPaths)' == '' ">
{CandidateAssemblyFiles};
$(ReferencePath);
{HintPathFromItem};
{TargetFrameworkDirectory};
{Registry:$(FrameworkRegistryBase),$(TargetFrameworkVersion),$(AssemblyFoldersSuffix)$(AssemblyFoldersExConditions)};
{AssemblyFolders};
{GAC};
{RawFileName};
$(OutputPath)
</AssemblySearchPaths>
My question is, which assembly search path are you?
I tend to create a project item link to any dependencies inside my
projects (e.g. 'Add > New Item > Existing Item... > Add as Link').
Because the assembly is then part of the current project - this makes
me a (1).
If you don't add an item link, you're probably using the hintpath
which is associated with your reference - making you a (3).
Which search path # are you?
Thanks,
Jamie.
--
http://www.testdriven.net
http://twitter.com/jcansdale
http://weblogs.asp.net/nunitaddin