
Manifests and search order
Both isolated applications and side-by-side assemblies are described by manifests. A manifest is an XML document that can be an external XML file or embedded inside an application or an assembly as a resource. The manifest file of an isolated application is used to manage the names and versions of shared side-by-side assemblies to which the application should bind at run time. The manifest of a side-by-side assembly specifies names, versions, resources, and dependent assemblies of side-by-side assemblies. For a shared side-by-side assembly, its manifest is installed in the WinSxS\Manifests folder. In the case of a private assembly, it is recommended to include its manifest in the DLL as a resource with ID equal to 1, and the name of the private assembly may be the same as the name of the DLL. For more information, see Private Assemblies.
At execution time, Windows uses assembly information from the application's manifest to search and load the corresponding side-by-side assembly. If an isolated application specifies an assembly dependency, the operating system first searches for the assembly among the shared assemblies in the WinSxS folder. If the required assembly is not found, the operating system then searches for a private assembly installed in a folder of the application's directory structure. For more information, see Assembly Searching Sequence.