Возможно ли иметь параллельные версии компонента C ++ / WinRT - PullRequest
0 голосов
/ 11 мая 2018

Со ссылкой на видео с конференции Microsoft Build 2018: https://medius.studios.ms/Embed/Video/BRK2425?sid=BRK2425

мы видим, что в новой версии IDL 3 отсутствует GUID. Позволяет ли это иметь две разные версии одного и того же компонента, скажем, в двух разных папках на одном компьютере, и они работают одновременно? Рассмотрим следующую структуру каталогов:

  • C: \
    • Appv1
      • clientapp.exe
      • mywinrtcomponent.dll
      • mywinrtcomponent.winmd
    • Appv2
      • Different-clientapp.exe
      • mywinrtcomponent.dll
      • mywinrtcomponent.winmd

Будут ли оба exe использовать DLL рядом с ними, или есть механизм регистрации, подобный COM-объектам?

Я знаю, что это невозможно с компонентами COM, потому что, если они имеют одинаковый тип ID (guid), для него может быть зарегистрирована только одна DLL, и выигрывает последняя зарегистрированная DLL.

Так что, я думаю, я мог бы перефразировать мой вопрос на тему: «Как разрешаются зависимости для клиентского приложения, использующего компонент c ++ - winrt?» Если это просто старый COM-объектоподобный объект, то я понимаю, что невозможно иметь две разные версии, но если он загружает DLL с помощью обычного LoadDLL () и сначала ищет текущую папку, это будет возможно.

...