У нас есть DLL (COM-сервер), которая прекрасно скомпилируется в 32-разрядной и 64-разрядной версиях, но DLL использует одинаковые CLSID и AppID для 32-разрядной и 64-разрядной версии.Это нормально или это нужно изменить?
Я спрашиваю это, потому что, очевидно, на 64-битной машине мы не можем зарегистрировать 32-битную версию и 64-битную версию вместе.Было бы неплохо, если бы 32-битные клиентские приложения могли автоматически использовать 32-битную DLL, а 64-битные клиентские приложения могли автоматически использовать 64-битную DLL.
В соответствующей заметке у нас есть исходный коди файл проекта Visual Studio 2005 для клиентского приложения ... как скомпилировать 32-разрядную и 64-разрядную версию одного и того же приложения?Это приложение на C #, которое включает в себя ссылку на нашу библиотеку DLL COM-сервера, например:
<ItemGroup> <COMReference Include="ComServer">
<Guid>{C1FADEA6-68FD-4F43-9FC2-0BC451FA5D53}</Guid>
<VersionMajor>830</VersionMajor> <VersionMinor>0</VersionMinor>
<Lcid>0</Lcid> <WrapperTool>tlbimp</WrapperTool> <Isolated>False</Isolated>
</COMReference> </ItemGroup>
Если выясняется, что нам нужен отдельный CLSID для 64-битной системы, как мы можем сделать эту ссылку "только для32-битная конфигурация "в Visual Studio?Или у нас должны быть отдельные проекты с одним и тем же исходным кодом: один ссылается на 32-битную DLL, а другой - на 64-битную DLL?