我们有一个使用多个dll的大型MFC应用程序。到目前为止,我们一直在使用vcredit_x86.exe将MFC和CRT安装到非托管并排程序集缓存(C:\ Windows\WinSxS)中。以这种方式安装MFC/CRT时,应用程序运行(在干净的XP机器上)。
根据MSDN文档,可以通过将程序集文件复制到安装应用程序的文件夹中来安装MFC/CRT。我已经用一个简单的MFC应用程序测试过了,它可以工作。但是我在使用这种方法让我们的大型MFC应用程序工作时遇到了问题。
该问题似乎是由于某些DLL具有引用早期版本CRT的清单(例如,一个DLL包含以下清单)引起的。
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50215.4652" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b" />
</dependentAssembly>
</dependency>
</assembly>
在使用私有并排程序集时,加载程序加载程序集较新版本的功能似乎不起作用,但在将程序集安装到WinSxS中时,它确实起作用。
有解决办法吗?