MSBuild assembly resolve order

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.

soundararajan