从 Windows XP 开始,可以创建专用程序集并将其提供给特定应用程序。 此功能可用于修复与更新不兼容的应用程序。 例如,操作系统升级后,一个应用程序可能会与最新版本的MSVCRT.DLL变得不兼容。 在这种情况下,你没有替换系统版本的选项,因为MSVCRT.DLL是 Windows 保护的文件。 不必重写应用程序以使用新版本的 MSVCRT,而是可以为 MSVCRT 创建专用程序集,并在应用程序文件夹中安装此程序集。 请注意,并非每个共享组件都是专用并行程序集的合适候选组件,并且某些组件具有关于其组件可安装位置的许可限制。 该组件需要满足并列组件的条件。 询问组件的发布者是否可以提供合适的程序集。
私有程序集的清单和应用程序的清单应都安装在与应用程序的可执行文件相同的文件夹中。 应用程序运行时,它会查阅应用程序清单,并加载专用于应用程序的 MSVCRT 版本。
对于此示例,专用程序集将包括MSVCRT.DLL和MSVCIRT.DLL,如以下程序集清单所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32"
name="Microsoft.Windows.PrivateCPlusPlusRuntime"
version="6.0.0.0"
processorArchitecture="x86"/>
<file name="msvcrt.dll"/>
<file name="msvcirt.dll"/>
</assembly>
下面是可能的应用程序清单的示例。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="x86"
name="APPLICATION"
type="win32"
/>
<description>Description of Application</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.PrivateCPlusPlusRuntime"
version="6.0.0.0"
processorArchitecture="x86"/>
</dependentAssembly>
</dependency>
</assembly>