COM DLLを使用する.NETアプリケーションがあり、32ビットバージョンと64ビットバージョンの両方があります。32ビットまたは64ビットのいずれかでCOM相互運用機能をサイドバイサイドで機能させる2つのアプリケーションマニフェストを作成しました。ここに32ビットバージョンがあります:
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="MyApp" version="1.0.0.0" type="win32" />
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="MyCOMDll_32.dll"
version="1.2.3.4"
processorArchitecture="x86"
publicKeyToken="0000000000000000"
language="*" />
</dependentAssembly>
</dependency>
</assembly>
ただし、2つのマニフェストを維持すると、移植性が失われます。アプリケーションをインストールするときに、使用するバージョンを決定する必要があります。また、64ビットアプリケーションは32ビットモードで実行できなくなりました。
.NETアプリケーションが実行されるビット数に応じて正しい32ビットまたは64ビットのDLLをロードする可能性はありますか?2つの依存関係要素を使用しようとしました。1つはwith <assemblyIdentity processorArchitecture="x86" .../>
、もう1つはwith<assemblyIdentity processorArchitecture="amd64" .../>
ですが、アプリケーション構成エラーが発生します。
答えていただければ幸いです。よろしく、モリッツ