我正在编译一个使用多个 DLL 并使用 VS2008 编译的项目。最近在我的计算机上编译的 Windows 更新 DLL 停止在其他计算机上工作。
经过一番调查,结果发现它将我正在编译的 CRT 可再发行库从版本“9.0.21022.8”更新到版本“9.0.30729.4148”
从我正在编译的 EXE 的清单文件中可以看出这一点。它包含以下内容:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
这意味着它想同时使用两个不同版本的 CRT。我现在正在编译的代码需要第二个版本,而几周前编译的旧 dll 需要第一个版本。
在部署应用程序的计算机中,这成为一个问题,因为它们从名为Microsoft.VC90.CRT
而不是从 WinSXS 的本地文件夹中获取 CRT dll。此文件夹不能包含两个不同版本的 dll。
这个问题是否有已知的解决方案,或者我是否需要开始使用新的 CRT 编译所有其他 DLL?