ver 6のcommctl32.dllにマニフェストの依存関係を含めることで、XPでUXthemeを示す簡単なWin32アプリケーションを作成しました。次に、簡単なWin32 dllを作成し、でビルドしISOLATION_AWARE_ENABLED
、Comctl32のバージョン5と6の両方を指定する埋め込みマニフェストでテストしました。 .dll
このメソッドを使用して、exeとdllで異なるバージョンのcomctl32.dllを使用できるようになりました。5を使用するexeとdllバージョン6の両方、およびその逆。
次に、アプリとdllをリセットして、comctlver5マニフェストの依存関係を設定します。そして、アプリケーション構成ファイルを導入しました:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<windows>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" processorArchitecture="amd64" publicKeyToken="6595b64144ccf1df"/>
<bindingRedirect oldVersion="5.82.7100.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</windows>
</configuration>
これで、アプリケーションを実行すると、アプリケーションがcommctlv6に明確にリダイレクトされます。XPUXThemeを有効にするとダイアログが明確に表示されます。ただし、dllはリダイレクトされておらず、commctlのテーマのないバージョン5を使用しています。
ドキュメントには、bindingRedirectsを実行するためのdllごとの構成ファイルについての言及はありません。そして、それを作成しようとしても何もしません。
また、アセンブリのあるメジャーバージョンから別のメジャーバージョンにbindingRedirectを実行することはサポートされているシナリオではないことも知っていますが、実際には、メカニズムをテストするための明白な簡単な方法としてcommctl32を使用しています。
dllの依存アセンブリのバージョンをリダイレクトするにはどうすればよいですか?