Использование API-интерфейса Activation Context с множеством библиотек в разных местах

Я использую API-интерфейс Activation Context в клиенте.Net, работающем в местоположении A, для загрузки COM-компонента без регистрации в местоположении B (которое совершенно отличается от местоположения A, а не одноуровневого / потомкового и т. Д. На одном компьютере) на WS2008. передавая местоположение B в ACTCTX, и он работает нормально.

Однако теперь мне нужно сделать то же самое с другой COM-библиотекой, которая, в свою очередь, зависит от пары.Net COM-сборок, которые живут в совершенно разных местах.

Я добавил зависимые сборки.Net в манифест и поместил манифест и COM-библиотеку в местоположение B, но я должен поместить зависимые сборки.Net в местоположение A (где работает клиент), чтобы заставить его работать. На самом деле они будут жить в совершенно разных каталогах для местоположения A и местоположения B.

Возможно ли то, что я пытаюсь сделать, т. Е. Возможно ли загрузить несколько компонентов COM в разные несвязанные каталоги, используя api контекста активации?

1 ответ

.NET просматривает активный и процессный контексты активации, чтобы обнаружить безрегулярные метаданные (<clrClass>и т. д.), как это делает нативный COM Однако, в отличие от собственного COM, он не использует информацию, содержащуюся в контексте активации, для определения местоположения фактических файлов. Там, я полагаю, он смотрит только на GAC, после чего располагаются файлы рядом с клиентским EXE-файлом. Вы, вероятно, можете подтвердить это с помощью Sysinternals Procmon. Я полагаю, что вы можете попробовать обходные пути, предложенные Хансом, или предварительно загрузить необходимые сборки вручную в ваш процесс и посмотреть, сработает ли это; Я не смог попробовать это, так как в моем сценарии клиентский exe был нативным exe, который я не мог контролировать.

Другие вопросы по тегам