Windows XP では、ローカル アプリケーション ディレクトリにmsvcp90.dll
、msvcr90.dll
、およびで実行される .exe があります。Visual C++ 2008 SP1 Redistributable Packageによってインストールされた、Microsoft.VC90.CRT.manifest
これらの .dll のポリシー ファイルも にあります。このポリシー ファイルを削除し、代わりにローカル ディレクトリにあるアプリ構成ファイルを使用したいと考えています。ポリシー ファイルは次のとおりです。C:\WINDOWS\WinSxS\Policies
<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のドキュメントには、アプリ構成ファイルは同じアセンブリ (アプリケーションごとの構成)の異なるバージョンを使用するようにアプリケーションをリダイレクトでき、必要に応じて既存のポリシー (発行者構成) ファイルをオーバーライドできると記載されています。したがって、ローカルのアプリ構成ファイルを使用できるはずであり、上記のファイルの何かが欠落しているか間違っていると思います。)