在 Windows XP 上,我有一个 .exe,它与msvcp90.dll
、msvcr90.dll
和Microsoft.VC90.CRT.manifest
在我的本地应用程序目录中运行。我还有一个用于这些 .dll 的策略文件C:\WINDOWS\WinSxS\Policies
,它是由Visual C++ 2008 SP1 Redistributable Package安装的。我想删除此策略文件并改用本地目录中的应用程序配置文件。策略文件是:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32-policy" name="policy.9.0.Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<bindingRedirect oldVersion="9.0.20718.0-9.0.21022.8" newVersion="9.0.30729.1"/>
<bindingRedirect oldVersion="9.0.30201.0-9.0.30729.1" newVersion="9.0.30729.1"/>
</dependentAssembly>
</dependency>
</assembly>
我的配置文件是:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<bindingRedirect oldVersion="9.0.20718.0-9.0.21022.8" newVersion="9.0.30729.1"/>
<bindingRedirect oldVersion="9.0.30201.0-9.0.30729.1" newVersion="9.0.30729.1"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Dependency Walker 在使用配置文件而不是策略文件时报告并排错误 - 出了什么问题?另外,配置文件应该命名<application>.exe.config
,还是Microsoft.VC90.CRT.config
?
(澄清一下,使用策略文件时没有出现错误。但是,这里的客户端不允许安装可再发行包。
MSDN 文档指出,应用程序配置文件可以重定向应用程序以使用同一程序集的不同版本(每个应用程序配置),并且如果需要,它可以覆盖现有策略(发布者配置)文件。所以我认为必须可以使用本地应用程序配置文件,并且上面文件中的某些内容丢失或不正确。)