У меня есть приложение .NET, которое использует COM DLL, 32-битная и 64-битная версии. Я написал два манифеста приложения, которые обеспечивают совместное взаимодействие COM на 32-битной или 64-битной версии. Вот 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>
Однако поддержание двух манифестов ведет к потере переносимости: вам нужно решить, какую версию использовать при установке приложения. И 64-разрядное приложение больше не может быть запущено в 32-разрядном режиме.
Есть ли возможность заставить приложение .NET загружать правильную 32-битную или 64-битную DLL в зависимости от разрядности, под которой оно работает?
Я попытался использовать два элемента зависимости, один с <assemblyIdentity processorArchitecture="x86" .../>
и один с <assemblyIdentity processorArchitecture="amd64" .../>
, но это приводит к ошибке конфигурации приложения.
Я был бы очень благодарен за ответы.
С Уважением,
Moritz