According to this MSDN blog: https://blogs.msdn.microsoft.com/manishagarwal/2005/09/28/resolving-file-references-in-team-build-part-2/
There is a search order for assemblies when building. The search order is as follows:
- Files from the current project – indicated by ${CandidateAssemblyFiles}.
- $(ReferencePath) property that comes from .user/targets file.
- %(HintPath) metadata indicated by reference item.
- Target framework directory.
- Directories found in registry that uses AssemblyFoldersEx Registration.
- Registered assembly folders, indicated by ${AssemblyFolders}.
- $(OutputPath) or $(OutDir)
- GAC
So, if the desired assembly is found by HintPath, but an alternate assembly can be found using ReferencePath, it will prefer the ReferencePath‘d assembly to the HintPath‘d one.