Hi all,
In case if you are curious about what order is followed by MSBuild while resolving references during managed build process, it is as follows.
1. Resolve {CandidateAssemblyFiles}
List of assemblies, which must be absolute file names or project-relative file names, to use for the search and raesolution process.
2. {HintPathFromItem}
HintPath is an entry in your project file for references assemblies. Something like
<Reference Include “Foo.dll">
<HintPath>”c:\foo\bar\mycousin”</HintPath>
</Reference>
The path will be probed to resolve the assemblies.
3. {TargetFrameworkDirectory}
This is the .NET Framework set of directories.
4. {Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}
This registry key has a set of subkeys, containing the folders to be looked upon when resolving references. Also this key is probed by the Visual Studio “Add Reference” Dialog" for showing them up.
5. {AssemblyFolders}
The folders mentioned in the “ReferencePaths” as I believe. (I will check this one out)
6. {GAC}
The Global assembly cache
7. {RawFileName}
The absolute path of assemblies mentioned in the project file.
8. bin\Release\
This is the output folder where the assembly will be generated.