The information in the manifest enables the reliable determination of the identity and version of an assembly. This is the basis for the deployment options available in .NET, and for the side-by-side execution of assemblies that helps .NET overcome DLL hell. This section looks at these issues in detail.
Prior to Windows RT, assemblies could be of two types. The first is an application-private assembly. As the name implies, this type of assembly is used by one application only and is not shared. This was the default style of assembly in .NET and is the main mechanism by which an application can be independent of changes to the system. Windows RT, which deploys applications using the Windows store, does not support this type of assembly.
Application-private assemblies are deployed into the application's own directory. Because application-private assemblies are not shared, they do not need a strong name. This means that at a minimum, they need to have only a name and version number in the identity section of the manifest. Because the assemblies are private to the application, the application does not perform version checks on the assemblies, as the application developer has control over the assemblies that are deployed to the application directory. If strong names exist, however, the CLR will verify that they match.
If all the assemblies that an application uses are application-private and the CLR is already installed on the ...