An infrastructure that allows applications to run with specified versions
of dependent assemblies, wherein each assembly may exist and run
side-by-side on the system with other versions of the same assembly being
used by other applications. An application provides a manifest to specify
any desired assembly versions on which it is dependent. Similarly, each
assembly may have an assembly manifest that specifies the versions of
assemblies on which it is dependent. During an initialization phase, an
activation context is created for the application, based on the
manifests, to map version independent names to a particular assembly
version maintained on the system. While the application is in a running
phase, for any globally named object that the application wants created,
the activation context is accessed to locate the application's or
assembly's manifest-specified version. The manifests and activation
context constructed therefrom thus isolate an application from assembly
version changes.